nodejs开发微信小程序实现密码加密


Posted in NodeJs onJuly 11, 2017

微信小程序开发--实现密码加密具体步骤:

在utils中的util.js 文件中增加 函数 实现 字符串转换为16进制加密后的字符串:

function encodeUTF8(s) {

var i, r = [], c, x;

for (i = 0; i < s.length; i++)

if ((c = s.charCodeAt(i)) < 0x80) r.push(c);

else if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F));

else {

if ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode

c = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000,

r.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F));

else r.push(0xE0 + (c >> 12 & 0xF));

r.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));

};

return r;

};

// 字符串加密成 hex 字符串

function sha1(s) {

var data = new Uint8Array(encodeUTF8(s))

var i, j, t;

var l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2);

s.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer);

for (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2);

s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8);

s[l - 1] = data.length << 3;

var w = [], f = [

function () { return m[1] & m[2] | ~m[1] & m[3]; },

function () { return m[1] ^ m[2] ^ m[3]; },

function () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; },

function () { return m[1] ^ m[2] ^ m[3]; }

], rol = function (n, c) { return n << c | n >>> (32 - c); },

k = [1518500249, 1859775393, -1894007588, -899497514],

m = [1732584193, -271733879, null, null, -1009589776];

m[2] = ~m[0], m[3] = ~m[1];

for (i = 0; i < s.length; i += 16) {

var o = m.slice(0);

for (j = 0; j < 80; j++)

w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1),

t = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0,

m[1] = rol(m[1], 30), m.pop(), m.unshift(t);

for (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0;

};

t = new DataView(new Uint32Array(m).buffer);

for (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2);

var hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) {

return (e < 16 ? "0" : "") + e.toString(16);

}).join("");

return hex;

};

导出函数

module.exports = {

formatTime: formatTime,

sha1:sha1

}

这样就可以在其他页面中调用了

var util = require('../../utils/util.js')

util.sha1("123456")

以 密码为 123456 作为示例,在线加密结果

nodejs开发微信小程序实现密码加密

小程序中调用结果

nodejs开发微信小程序实现密码加密

加密结果是相同的

NodeJs 相关文章推荐
nodejs 后缀名判断限制代码
Mar 31 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 #NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 #NodeJs
Nodejs之http的表单提交
Jul 07 #NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 #NodeJs
nodejs模块学习之connect解析
Jul 05 #NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 #NodeJs
nodejs 子进程正确的打开方式
Jul 03 #NodeJs
You might like
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
用PHP来写记数器(详细介绍)
2006/10/09 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
node.js使用require()函数加载模块
2014/11/26 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
Node.js net模块功能及事件监听用法分析
2019/01/05 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
一篇不错的Python入门教程
2007/02/08 Python
Python基础之函数用法实例详解
2014/09/10 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
给幼儿园老师的表扬信
2014/01/19 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
代理协议书
2014/04/22 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
python本地文件服务器实例教程
2021/05/02 Python
python中urllib包的网络请求教程
2022/04/19 Python