微信小程序 sha1 实现密码加密实例详解


Posted in Javascript onJuly 06, 2017

微信小程序 sha1 实现密码加密实例详解

在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 作为示例,在线加密结果

微信小程序 sha1 实现密码加密实例详解

小程序中调用结果

微信小程序 sha1 实现密码加密实例详解

加密结果是相同的

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
IE之动态添加DOM节点触发window.resize事件
Jul 27 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
JavaScript中对象属性的添加和删除示例
May 12 Javascript
用javascript对一个json数组深度赋值示例
Jul 27 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
Javascript的表单验证-初识正则表达式
Mar 18 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
js实现年月日表单三级联动
Apr 17 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 Javascript
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 #Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 #Javascript
AngularJS常见过滤器用法实例总结
Jul 06 #Javascript
Vue学习之路之登录注册实例代码
Jul 06 #Javascript
AngularJS中ng-class用法实例分析
Jul 06 #Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 #jQuery
JS图片轮播与索引变色功能实例详解
Jul 06 #Javascript
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
Python中的迭代器漫谈
2015/02/03 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
元旦晚会邀请函
2014/01/27 职场文书
高中运动会入场词
2014/02/14 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
教师听课学习心得体会
2016/01/15 职场文书
《风筝》教学反思
2016/02/23 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python