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批量修改文件编码格式
Jan 22 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs nedb 封装库与使用方法示例
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
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jquery选择器简述
2015/08/31 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
js微信分享实现代码
2020/10/11 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
vue实现固定位置显示功能
2019/05/30 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
python实现将内容分行输出
2015/11/05 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python实现杨辉三角思路
2017/07/14 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python调用百度REST API实现语音识别
2018/08/30 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
我未来的职业规划范文
2014/01/11 职场文书
护士进修自我鉴定
2014/02/07 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
国庆横幅标语
2014/10/08 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
好员工观后感
2015/06/17 职场文书
三八妇女节主持词
2015/07/04 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang