当前位置:首页 > 日记 > 正文

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

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

微信小程序 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 作为示例,在线加密结果

小程序中调用结果

加密结果是相同的

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

相关文章

ps怎么给添加像素化特效?

ps怎么给添加像素化特效?

像素,特效,电脑软件,ps,利用ps制作像素化人物特效,主要使用了ps的颜色通道和彩色半调功能,现在就把操作步骤和截图分享出来,供大家参考使用,希望对你有所帮助。软件名称:Photoshop CS5 绿色版官方中文正式原版软件大小:104.06MB更新时间:2014-06-0…

QQ空间怎么快速搜索好友动态

QQ空间怎么快速搜索好友动态

动态,空间,快速搜索,好友,电脑软件,  QQ空间怎么快速搜索好友动态?QQ空间新增空间搜索功能,大家开来尝鲜吧。跟随小编,一块看看如何搜索QQ空间好友动态,需要的朋友可以参考下.欢迎大家前来阅读!QQ空间怎么快速搜索好友动态  1、点击appsto…

PPT2013中怎么做让文字波浪起伏效

PPT2013中怎么做让文字波浪起伏效

波浪,文字,效果,怎么做,电脑软件,  在PPT2013中插入文本框之后,输入文字,文字是没有任何效果的,如果给文字添加一些动画效果,在幻灯片放映时毫无疑问会更加生动有趣。以下是小编为您带来的关于PPT2013中让文字波浪起伏效果,希望对您有所帮助。…

全面解析Node.js 8 重要功能和修复

全面解析Node.js 8 重要功能和修复

功能,电脑软件,Node,js,5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS)。下面就来介绍Node.js 8版本中最重要的功能和修复。新版本的代号是Carbon。Node.js 8将从2017年10月起,正式…

数组Array的一些方法 | 总结

数组Array的一些方法 | 总结

方法,数组,电脑软件,Array,数组对象属性和方法的概述:1> arr.push() 将参数添加至数组的末尾,返回的是新数组的长度2> arr.unshift() 将参数添加到数组的开头,返回新数组的长度3> arr.shift() 删除数组的第一位,返回被删除的数字4> arr.pop() …

JS实现按钮控制计时开始和停止功能

JS实现按钮控制计时开始和停止功能

控制,按钮,功能,电脑软件,JS,下面给大家分享一段实例代码关于JS实现按钮控制计时开始和停止功能,具体代码如下所示:<span style="font-size:18px;"><body> 小闹钟: <span id="nz"></span> <input type="button" value="开始计时" o…

cdr怎么给添加艺术印象派效果?

cdr怎么给添加艺术印象派效果?

印象派,效果,艺术,电脑软件,cdr,cdr中图片可以制作很多效果,今天我们就来看看使用艺术笔触给图片添加艺术效果的教程。软件名称:CorelDraw x6 (Cdr x6) 官方简体中文破解版(32位)安装图文教程、破解注册方法软件大小:更新时间:2014-08-271、打开C…

javascript 中null和undefined区分

javascript 中null和undefined区分

电脑软件,javascript,null,undefined,javascript 中null和undefined区分和比较Undefined类型Undefined 类型只有一个值,即特殊 undefined 。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined ,例如:var message;alert(mess…

微信小视频临时保存在哪微信小视频

微信小视频临时保存在哪微信小视频

位置,方法,小视频,电脑软件,strong,  为方便广大微信用户,微信小视频新推出了这个临时保存的功能,那么临时保存的位置到底在哪呢?小编整理了关于微信小视频临时保存的位置,希望对大家有帮助!查看微信小视频临时保存位置的方法1、首先大家先进…

ppt2010怎么设置页码大小ppt2010设

ppt2010怎么设置页码大小ppt2010设

设置,步骤,方法,页码,大小,  有事需要在PPT中添加图片,是不是感觉PPT太小,只能缩小图片导致图片模糊不清?此时要怎么做呢?下面小编教你怎么设置页码大小。希望对你有帮助!ppt2010设置页码大小的步骤1.打开软件:先打开PowerPoint,新建一个幻灯…

JS实现加载时锁定HTML页面元素的方

JS实现加载时锁定HTML页面元素的方

元素,锁定,加载,方法,页面,本文实例讲述了JS实现加载时锁定HTML页面元素的方法。分享给大家供大家参考,具体如下:在html加载时js锁定页面内所有input,textarea,select 具体js如下index.jsfor(z=0;z<document.getElementsByTagName('input').…

JS开发中基本数据类型具体有哪几种

JS开发中基本数据类型具体有哪几种

基本数据类型,几种,电脑软件,JS,JS开发中基本数据类型有哪些?JS的数据类型包括基本数据类型、复杂数据类型和特殊数据类型,今天我们主要先讲解一下基本数据类型。0、先提示两个下面用到的知识点:0.1typeof,是用来检测变量类型的写法:typeof a;0.2…