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导出excel的方法
Jun 30 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
Feb 06 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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生成随机密码的三种方法小结
2010/09/04 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
浅析return false的正确使用
2013/11/04 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
详解Vue2.5+迁移至Typescript指南
2019/08/01 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
Python 面向对象部分知识点小结
2020/03/09 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python中sys模块是做什么用的
2020/08/16 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
地球一小时宣传标语
2014/06/24 职场文书
大专毕业生求职信
2014/07/05 职场文书
合伙经营协议书范本
2014/09/13 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
怒海潜将观后感
2015/06/11 职场文书