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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 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开启opcache提升代码性能
2015/04/26 PHP
php代码架构的八点注意事项
2016/01/25 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
javascript连续赋值问题
2015/07/08 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
JS中的作用域链
2017/03/01 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
如何编写jquery插件
2017/03/29 jQuery
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
Three.js基础学习教程
2017/11/16 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
python实现删除文件与目录的方法
2014/11/10 Python
利用Python实现图书超期提醒
2016/08/02 Python
Python 操作文件的基本方法总结
2017/08/10 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python3.5安装python3-tk详解
2019/04/26 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
python 实现简易的记事本
2020/11/30 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
保险专业大专生求职信
2013/10/26 职场文书
房地产融资计划书
2014/01/10 职场文书
年终总结会主持词
2014/03/25 职场文书
安全责任协议书
2014/04/21 职场文书
公司员工活动策划方案
2014/08/20 职场文书
Python 阶乘详解
2021/10/05 Python
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫
Promise静态四兄弟实现示例详解
2022/07/07 Javascript