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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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下将XML转换为数组
2010/01/01 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
python实现二分查找算法
2017/09/21 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
为什么要做架构设计
2015/07/08 面试题
生物技术毕业生自荐信
2013/10/23 职场文书
金融专业应届生求职信
2013/11/02 职场文书
30岁生日感言
2014/01/25 职场文书
创业计划书如何编写
2014/02/06 职场文书
个人年底工作总结
2015/03/10 职场文书
钱学森电影观后感
2015/06/04 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
详解Laravel服务容器的优势
2021/05/29 PHP
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL