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实用示例 缩址还原
Dec 28 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 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缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
解决laravel session失效的问题
2019/10/14 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
javascript 数组操作详解
2015/01/29 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
详解Python3注释知识点
2019/02/19 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
super()与this()的区别
2016/01/17 面试题
DataList 能否分页,请问如何实现?
2015/05/03 面试题
如何提高MySql的安全性
2014/06/19 面试题
大学生自我鉴定范文
2013/12/28 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
医德医风自我评价2015
2015/03/03 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers