微信小程序加密 MD5
1、untils 新建md5.js
/* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 1.1 Copyright (C) Paul Johnston 1999 - 2002. * Code also contributed by Greg Holt * See http://pajhome.org.uk/site/legal.html for details. */ /* * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */
function safe_add(x, y)
{ var lsw = (x & 0xFFFF) + (y & 0xFFFF) var msw = (x >> 16) + (y >> 16) + (lsw >> 16) return (msw << 16) | (lsw & 0xFFFF)
} /* * Bitwise rotate a 32-bit number to the left. */
function rol(num, cnt)
{ return (num << cnt) | (num >>> (32 - cnt))
} /* * These functions implement the four basic operations the algorithm uses. */
function cmn(q, a, b, x, s, t)
{ return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
}
function ff(a, b, c, d, x, s, t)
{ return cmn((b & c) | ((~b) & d), a, b, x, s, t)
}
function gg(a, b, c, d, x, s, t)
{ return cmn((b & d) | (c & (~d)), a, b, x, s, t)
}
function hh(a, b, c, d, x, s, t)
{ return cmn(b ^ c ^ d, a, b, x, s, t)
}
function ii(a, b, c, d, x, s, t)
{ return cmn(c ^ (b | (~d)), a, b, x, s, t)
} /* * Calculate the MD5 of an array of little-endian words, producing an array * of little-endian words. */
function coreMD5(x)
{ var a = 1732584193 var b = -271733879 var c = -1732584194 var d = 271733878 for(var i = 0; i < x.length; i += 16) { var olda = a var oldb = b var oldc = c var oldd = d a = ff(a, b, c, d, x[i+ 0], 7 , -680876936) d = ff(d, a, b, c, x[i+ 1], 12, -389564586) c = ff(c, d, a, b, x[i+ 2], 17, 606105819) b = ff(b, c, d, a, x[i+ 3], 22, -1044525330) a = ff(a, b, c, d, x[i+ 4], 7 , -176418897) d = ff(d, a, b, c, x[i+ 5], 12, 1200080426) c = ff(c, d, a, b, x[i+ 6], 17, -1473231341) b = ff(b, c, d, a, x[i+ 7], 22, -45705983) a = ff(a, b, c, d, x[i+ 8], 7 , 1770035416) d = ff(d, a, b, c, x[i+ 9], 12, -1958414417) c = ff(c, d, a, b, x[i+10], 17, -42063) b = ff(b, c, d, a, x[i+11], 22, -1990404162) a = ff(a, b, c, d, x[i+12], 7 , 1804603682) d = ff(d, a, b, c, x[i+13], 12, -40341101) c = ff(c, d, a, b, x[i+14], 17, -1502002290) b = ff(b, c, d, a, x[i+15], 22, 1236535329) a = gg(a, b, c, d, x[i+ 1], 5 , -165796510) d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632) c = gg(c, d, a, b, x[i+11], 14, 643717713) b = gg(b, c, d, a, x[i+ 0], 20, -373897302) a = gg(a, b, c, d, x[i+ 5], 5 , -701558691) d = gg(d, a, b, c, x[i+10], 9 , 38016083) c = gg(c, d, a, b, x[i+15], 14, -660478335) b = gg(b, c, d, a, x[i+ 4], 20, -405537848) a = gg(a, b, c, d, x[i+ 9], 5 , 568446438) d = gg(d, a, b, c, x[i+14], 9 , -1019803690) c = gg(c, d, a, b, x[i+ 3], 14, -187363961) b = gg(b, c, d, a, x[i+ 8], 20, 1163531501) a = gg(a, b, c, d, x[i+13], 5 , -1444681467) d = gg(d, a, b, c, x[i+ 2], 9 , -51403784) c = gg(c, d, a, b, x[i+ 7], 14, 1735328473) b = gg(b, c, d, a, x[i+12], 20, -1926607734) a = hh(a, b, c, d, x[i+ 5], 4 , -378558) d = hh(d, a, b, c, x[i+ 8], 11, -2022574463) c = hh(c, d, a, b, x[i+11], 16, 1839030562) b = hh(b, c, d, a, x[i+14], 23, -35309556) a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060) d = hh(d, a, b, c, x[i+ 4], 11, 1272893353) c = hh(c, d, a, b, x[i+ 7], 16, -155497632) b = hh(b, c, d, a, x[i+10], 23, -1094730640) a = hh(a, b, c, d, x[i+13], 4 , 681279174) d = hh(d, a, b, c, x[i+ 0], 11, -358537222) c = hh(c, d, a, b, x[i+ 3], 16, -722521979) b = hh(b, c, d, a, x[i+ 6], 23, 76029189) a = hh(a, b, c, d, x[i+ 9], 4 , -640364487) d = hh(d, a, b, c, x[i+12], 11, -421815835) c = hh(c, d, a, b, x[i+15], 16, 530742520) b = hh(b, c, d, a, x[i+ 2], 23, -995338651) a = ii(a, b, c, d, x[i+ 0], 6 , -198630844) d = ii(d, a, b, c, x[i+ 7], 10, 1126891415) c = ii(c, d, a, b, x[i+14], 15, -1416354905) b = ii(b, c, d, a, x[i+ 5], 21, -57434055) a = ii(a, b, c, d, x[i+12], 6 , 1700485571) d = ii(d, a, b, c, x[i+ 3], 10, -1894986606) c = ii(c, d, a, b, x[i+10], 15, -1051523) b = ii(b, c, d, a, x[i+ 1], 21, -2054922799) a = ii(a, b, c, d, x[i+ 8], 6 , 1873313359) d = ii(d, a, b, c, x[i+15], 10, -30611744) c = ii(c, d, a, b, x[i+ 6], 15, -1560198380) b = ii(b, c, d, a, x[i+13], 21, 1309151649) a = ii(a, b, c, d, x[i+ 4], 6 , -145523070) d = ii(d, a, b, c, x[i+11], 10, -1120210379) c = ii(c, d, a, b, x[i+ 2], 15, 718787259) b = ii(b, c, d, a, x[i+ 9], 21, -343485551) a = safe_add(a, olda) b = safe_add(b, oldb) c = safe_add(c, oldc) d = safe_add(d, oldd) } return [a, b, c, d]
} /* * Convert an array of little-endian words to a hex string. */
function binl2hex(binarray)
{ var hex_tab = "0123456789abcdef" var str = "" for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8)) & 0xF) } return str
} /* * Convert an array of little-endian words to a base64 encoded string. */
function binl2b64(binarray)
{ var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" var str = "" for(var i = 0; i < binarray.length * 32; i += 6) { str += tab.charAt(((binarray[i>>5] << (i%32)) & 0x3F) | ((binarray[i>>5+1] >> (32-i%32)) & 0x3F)) } return str
} /* * Convert an 8-bit character string to a sequence of 16-word blocks, stored * as an array, and append appropriate padding for MD4/5 calculation. * If any of the characters are >255, the high byte is silently ignored. */
function str2binl(str)
{ var nblk = ((str.length + 8) >> 6) + 1 // number of 16-word blocks var blks = new Array(nblk * 16) for(var i = 0; i < nblk * 16; i++) blks[i] = 0 for(var i = 0; i < str.length; i++) blks[i>>2] |= (str.charCodeAt(i) & 0xFF) << ((i%4) * 8) blks[i>>2] |= 0x80 << ((i%4) * 8) blks[nblk*16-2] = str.length * 8 return blks
} /* * Convert a wide-character string to a sequence of 16-word blocks, stored as * an array, and append appropriate padding for MD4/5 calculation. */
function strw2binl(str)
{ var nblk = ((str.length + 4) >> 5) + 1 // number of 16-word blocks var blks = new Array(nblk * 16) for(var i = 0; i < nblk * 16; i++) blks[i] = 0 for(var i = 0; i < str.length; i++) blks[i>>1] |= str.charCodeAt(i) << ((i%2) * 16) blks[i>>1] |= 0x80 << ((i%2) * 16) blks[nblk*16-2] = str.length * 16 return blks
} /* * External interface */
function hexMD5 (str) { return binl2hex(coreMD5( str2binl(str))) }
function hexMD5w(str) { return binl2hex(coreMD5(strw2binl(str))) }
function b64MD5 (str) { return binl2b64(coreMD5( str2binl(str))) }
function b64MD5w(str) { return binl2b64(coreMD5(strw2binl(str))) }
/* Backward compatibility */
function calcMD5(str) { return binl2hex(coreMD5( str2binl(str))) }
module.exports = { hexMD5: hexMD5
}
2、在引入的页面js
var utilMd5 = require('../../utils/md5.js')
3、在加密上
let stringSignTemp = 'appId=' + '&nonceStr=' + NoceStr + '&package=' + `prepay_id=${PrepayId}` + '&signType=MD5&timeStamp=' + timeStamp + '&key='let paySign = utilMd5.hexMD5(stringSignTemp).toUpperCase()
注意: hexMd5: 是md5.js抛出的
utilMd5 是当前页面JS引入的
微信小程序加密 MD5相关推荐
- 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed
微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed 参考文章: (1)微信小程序加密解密 C# 以及 ...
- 微信小程序:MD5 加密
微信小程序是基于 js 进行封装的,所以,本质上是 js 的 MD5 加密 一个问题是,我后台服务器用的是 Python,js 和 Python 会有 MD5 密文不一致的情况 具体参考:https: ...
- 微信小程序使用MD5加密
在微信小程序开发中,使用到MD5加密(比如登录加密password). 具体实现方法: 首先在项目中找到utils文件,在该文件下新建一个js文件 md5.js 然后复制下面的代码到你的文件中 /* ...
- 解密微信小程序加密的微信运动数据(java)
使用java springmvc对微信小程序获取到的加密微信运动数据进行解密 //解密微信运动数据@ResponseBody@RequestMapping(value = "getEncry ...
- 微信小程序与服务器对称加解密,细说CryptoJs使用(微信小程序加密解密)
前言 CryptoJs是google推出的一款前段解密类库.功能强大,包含很多的前段解密算法. 一.google下载地址: 二次开发版本 google原版地址 二.常用方法 Testing webso ...
- 微信小程序 javascript MD5 支持汉字
今天白天搞完RSA,晚上回来没啥 事,这破疫情真的把人快木乱了,又要封三天..特奶的,这样下去 ,不是我要被封而是我要快疯~~~~!!!!! 回到家,看着我的小棉袄在那里认真的学习,又看到我置满IT书 ...
- 解密微信小程序加密信息
获取微信程序人员信息之后,会给一个加密字符串,这个时候,前端不太好解密,因为浪费性能,会请求后端解密,那么后端如何解密呢?demo来说话: 1.首先工具类 package com.XXX.member ...
- 微信小程序加密消息解密工具类
开发者后台校验与解密开放数据 微信会对这些开放数据做签名和加密处理.开发者后台拿到开放数据后可以对数据进行校验签名和解密,来保证数据不被篡改. 签名校验以及数据加解密涉及用户的会话密钥 session ...
- 反编译微信小程序,win电脑解析获取微信小程序源码
好不容易写的小程序然后忘记保存被删了怎么办?不要慌这里就教你怎么搞. 环境准备 1.node 环境准备 Node下载地址 安装后将nodejs设置为环境变量. 打开cmd,测试是否安装成功:在命令行输 ...
最新文章
- form表单提交,Servlet接收并读取Excel文件
- 借助Ant工具,实现快速开发
- jmeter 测试websocket接口(一)
- gridlayoutmanager 设置间距_不设置主灯的客厅应当如何保证较好的灯光分布?
- 008. 限制上传文件的大小
- Android 为控件设置阴影
- 消费者驱动的微服务契约测试套件Spring Cloud Contract
- Android入门学习4
- HashSet底层存储元素的源码分析
- python流程自动化_python selenium 自动化流程的一些总结与思考
- ipad键盘映射_如何在iPad上重新映射修饰键
- 百度联合清华发布国内首个基于AI实践的产业智能化白皮书
- SRCNN代码及注释
- 《解忧杂货店》读后感:路一直都在,进步就是幸福
- 爱快软路由在VMware上安装过程分享,基于多网卡的本机+带多机上网,考研计算机网络实战
- 【后端】--process information unavailable解决办法[详细版]
- 微软文件共享服务器进程,Windows Server“8”– 将服务器应用程序存储转移到 Windows 文件共享...
- winform中使用ReportViewer的时候,找不到报表数据面板.
- 计算机毕设(附源码)JAVA-SSM基于web的社团管理系统
- 语音相关的数据集-5个数据集
热门文章
- jieba库的安装与使用方法
- matlab非平稳信号小波和FFT去噪
- 微信小程序的登录界面实现
- 网络广播mms直播地址
- ikbc c87 Win键失灵/锁定
- 用户画像:标签化就是数据的抽象能力
- C++ 实现文件夹复制
- vue + prerender + html-webpack-plugin 打包商桥项目报错
- 数据结构与算法——左程云09
- html使表格位于页面的右下方,在 HTML 页面中,要显示如下图所示的表格,应在下方 HTML 代码的下划线处填写()。 table border=”1” trtd =”2” 性别 /...