微信小程序 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 相关文章推荐
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
jQuery实现跟随鼠标运动图层效果的方法
Feb 02 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
JS动态创建元素的两种方法
Apr 20 Javascript
百度搜索框智能提示案例jsonp
Nov 28 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
jquery ui sortable拖拽后保存位置
Apr 27 jQuery
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 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
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
DOM基础教程之使用DOM控制表格
2015/01/20 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
Python处理JSON数据并生成条形图
2016/08/05 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
Python基于requests库爬取网站信息
2020/03/02 Python
Python实现ElGamal加密算法的示例代码
2020/06/19 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
adidas美国官网:adidas US
2016/09/21 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
《李广射虎》教学反思
2014/04/27 职场文书
个人年度总结报告
2015/03/09 职场文书
销售合作意向书范本
2015/05/08 职场文书
2016计划生育先进个人事迹材料
2016/02/29 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏