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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
14款NodeJS Web框架推荐
Jul 11 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
js分页工具实例
2015/01/28 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
Python截图并保存的具体实例
2021/01/14 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
旷课检讨书范文
2014/10/30 职场文书
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript