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(二)--- Node.js事件模块
May 21 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
基于mysql的bbs设计(二)
2006/10/09 PHP
利用static实现表格的颜色隔行显示
2006/10/09 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
laravel安装和配置教程
2014/10/29 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
PHP反射学习入门示例
2019/06/14 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
教你安装python Django(图文)
2013/11/04 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
试用期员工工作自我评价
2014/09/10 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
实训报告范文大全
2014/11/04 职场文书
放弃继承权公证书
2015/01/23 职场文书
幼师小班个人总结
2015/02/12 职场文书