微信小程序 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 相关文章推荐
javascript简易缓动插件(源码打包)
Feb 16 Javascript
javascript小数四舍五入多种方法实现
Dec 23 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
AngularJS入门教程(一):静态模板
Dec 06 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
angularjs之$timeout指令详解
Jun 13 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
详解Vue中的基本语法和常用指令
Jul 23 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 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自动加载机制的深入分析
2013/06/08 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
JS沙箱模式实例分析
2017/09/04 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python模拟百度登录实例详解
2016/01/20 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
python中pdb模块实例用法
2021/01/15 Python
机电专业体育教师求职信
2013/09/21 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
探亲假请假条
2014/04/11 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
企业党建工作总结2015
2015/05/26 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
配置nginx 重定向到系统维护页面
2021/06/08 Servers
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript