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
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 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的安全策略
2006/10/09 PHP
php新建文件自动编号的思路与实现
2011/06/27 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
Javascript的闭包
2009/12/31 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python中对数据进行各种排序的方法
2019/07/02 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
python 动态绘制爱心的示例
2020/09/27 Python
Python修改DBF文件指定列
2020/12/19 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
美德少年事迹材料500字
2014/08/19 职场文书
员工给公司的建议书
2019/06/24 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书