微信小程序 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 相关文章推荐
jquery创建div 实现代码
Apr 27 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
轻松实现js弹框显示选项
Sep 13 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
简单实现AngularJS轮播图效果
Apr 10 Javascript
ionic2.0双击返回键退出应用
Sep 17 Javascript
vue 翻页组件vue-flip-page效果
Feb 05 Javascript
详解JavaScript自定义函数
Jul 29 Javascript
js实现纯前端压缩图片
Nov 16 Javascript
通过滑动翻页效果实现和移动端click事件问题
Jan 26 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
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[01:03:41]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第三场 2月2日
2021/03/11 DOTA
Python中正则表达式详解
2017/05/17 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
关于Keras Dense层整理
2020/05/21 Python
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
家长给孩子的评语
2014/01/30 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
安全学习心得体会范文
2016/01/18 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python