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中SSL服务的性能
Jul 15 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 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 setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
python动态监控日志内容的示例
2014/02/16 Python
Scrapy的简单使用教程
2017/10/24 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
使用python绘制二维图形示例
2019/11/22 Python
Python zip函数打包元素实例解析
2019/12/11 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
大学生冰淇淋店商业计划书
2014/01/14 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
Golang jwt身份认证
2022/04/20 Golang