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

nodejs开发微信小程序实现密码加密

nodejs开发微信小程序实现密码加密

微信小程序开发--实现密码加密具体步骤:

在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转换为Unicodec = (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 作为示例,在线加密结果


小程序中调用结果


加密结果是相同的

相关文章

微信小程序--组件(swiper)详细介绍

微信小程序--组件(swiper)详细介绍

组件,详细介绍,程序,电脑软件,微信小,根据微信小程序官网提供的示例进行操作并进行总结:swiper 主要设置的属性index.WXML 的设置:index.js设置:感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!…

React组件生命周期详解

React组件生命周期详解

组件,生命周期,详解,电脑软件,React,调用流程可以参看上图。 React组件提供了生命周期的钩子函数去响应组件不同时刻的状态,组件的生命周期如下:实例化 存在期 销毁期实例化 首次调用组件时,有以下方法会被调用(注意顺序,从上到下先后执行):getD…

怎么批量替换ppt的背景批量替换ppt

怎么批量替换ppt的背景批量替换ppt

批量替换,步骤,方法,替换,背景,  我们经常会遇到想要将整篇ppt都换成其他背景的情况,对ppt不熟悉的话,如果你是一页一页替换,遇到页数多的内容就太花时间了。如何批量替换ppt的背景呢?下面小来告诉你吧。▼▼▼了解更多PPT的操作技巧,欢迎点…

解决JS内存泄露之js对象和dom对象

解决JS内存泄露之js对象和dom对象

对象,内存泄露,引用,电脑软件,JS,该问题涉及到作用域链,js对象和dom对象互相引用的问题。 因为对于匿名函数而言,其作用域链包含三个对象:匿名函数的变量对象、doTry()的变量对象和全局变量对象。此时doTry函数对象中btn变量引用了dom…

React如何将组件渲染到指定DOM节点

React如何将组件渲染到指定DOM节点

节点,组件,如何将,详解,电脑软件,前言众所周知React优点之一就是他的API特别简单。通过render 方法返回一个组件的基本结构,如同一个简单的函数,就可以得到一个可以复用的react组件。但是有时候还是会有些限制的,尤其是他的API中,不能控制组件…

javascript实现table单元格点击展

javascript实现table单元格点击展

实例代码,单元格,效果,电脑软件,javascript,如果table元素的高如果不设置,是根据内容撑开的,根据这个规则,可以用js控制默认状态下table-cell的宽度,并将这一列的table-cell设置为dispaly:block,这样多出来的内容就会被隐藏掉,添加点击事件,把table…

JavaScript之DOM_动力节点Java学院

JavaScript之DOM_动力节点Java学院

学院,节点,动力,电脑软件,JavaScript,由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作:更新:更新该DOM节点的内容,相当于更新了…

Yii2.0中使用js异步删除示例

Yii2.0中使用js异步删除示例

删除,异步,示例,电脑软件,js,整理文档,搜刮出一个Yii2.0中使用js异步删除示例,稍微整理精简一下做下分享。控制器:public function actionWeixinnotificationdel(){ $model = WxDistributorNotification::findOne($_GET['id']); if ($model)…

Excel中2010进行自动填充数据的操

Excel中2010进行自动填充数据的操

自动填充,数据,操作技巧,操作步骤,电脑软件,  序列填充是Excel中提供的最常用的快速输入技术之一。在Excel中可以通过以下途径进行数据的自动填充。今天,小编就教大家在Excel中2010进行自动填充数据的操作技巧。Excel中2010进行自动填充数…

JS实现页面打印功能

JS实现页面打印功能

页面,功能,电脑软件,JS,打印整个页面示例1.可直接在按钮添加调用打印方法:<input type='button' value='打印整页' onclick='javascript:window.print();' />示例2.也可调用JS方法<html><head><script type="text/javascript">funct…

ES6解构赋值实例详解

ES6解构赋值实例详解

赋值,详解,实例,电脑软件,本文实例讲述了ES6解构赋值。分享给大家供大家参考,具体如下:基本用法let [x, y, ...z] = ['a']//"a", undefined, []1.等号右边如果不是数组,将会报错(不是可遍历结构)2.解构赋值 var, let, const命令声明均适用3.…

关于vue.js发布后路径引用的问题解

关于vue.js发布后路径引用的问题解

引用,路径,电脑软件,vue,js,本文主要给大家介绍了关于vue.js发布后路径引用问题的解决方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:在发布到iis目录下时候,如果放在网站的根目录下的时候,是不会有什么问题的但是一旦放在了…