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学习小结(一)
Jul 06 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs中 npm常用命令详解
Jul 04 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 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
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
IE6 fixed的完美解决方案
2011/03/31 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python实现倒计时的示例
2014/02/14 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python探索之创建二叉树
2017/10/25 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
应届毕业生求职自荐书
2014/01/03 职场文书
军训自我鉴定
2014/01/22 职场文书
暑期社会实践方案
2014/02/05 职场文书
网络管理专业求职信
2014/03/15 职场文书
地道战观后感500字
2015/06/04 职场文书
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server