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基本语法和类型
Feb 13 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
Nodejs抓取html页面内容(推荐)
Aug 11 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
使用PHP求两个文件的相对路径
2013/06/20 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
详解javascript遍历方式
2015/11/11 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Python序列操作之进阶篇
2016/12/08 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
心得体会的写法
2014/09/05 职场文书
员工加薪申请报告
2015/05/15 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript