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框架Express的模板视图机制分析
Jul 19 NodeJs
NodeJS学习笔记之Http模块
Jan 13 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 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 Array交叉表实现代码
2010/08/05 PHP
php xml 入门学习资料
2011/01/01 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
PHP静态文件生成类实例
2014/11/29 PHP
分享php多功能图片处理类
2016/05/15 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Python FTP操作类代码分享
2014/05/13 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
还款承诺书范文
2014/05/20 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
民主生活会汇报材料
2014/12/15 职场文书
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL