微信小程序 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 相关文章推荐
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
解决jQuery使用JSONP时产生的错误
Dec 02 Javascript
深入分析Javascript事件代理
Jan 30 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
微信小程序 wxapp地图 map详解
Oct 31 Javascript
js简单正则验证汉字英文及下划线的方法
Nov 28 Javascript
原生JS实现左右箭头选择日期实例代码
Mar 14 Javascript
JavaScript字符串检索字符的方法
Jun 23 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
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 和 XML: 使用expat函数(一)
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
javascript闭包的理解
2015/04/01 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
解读Python中degrees()方法的使用
2015/05/18 Python
Python字符串格式化
2015/06/15 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python常用的json标准库
2019/02/19 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Python中如何添加自定义模块
2020/06/09 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
金融专业大学生自我评价
2014/01/09 职场文书
素质拓展感言
2014/01/29 职场文书
高中综合实践活动总结
2014/07/07 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python