JS获取MD5
今天收到一个JS需求,随机生成不能重复的token, 不能重复的字串,首先想到是md5值,那么怎么生成不重复的md5值呢, 用时间戳生成md5是好的选择。那又如何生成md5呢,方法实现:
1、Mtils是一套前端代码集合,提供常用的数据校验、数据加密、扩展函数、便捷函数。Git地址(点此下载):https://github.com/MisterChangRay/Mtils2 。 不过我只需要用到用到Md5方法,其它的用不上。
2、JS实现, 代码如下(可直接全部复制测试):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>test</title>
</head>
<body>
<script type="text/javascript">
var hex_chr = "0123456789abcdef";
function rhex(num) {
str = "";
for (j = 0; j <= 3; j )
str = hex_chr.charAt((num >> (j * 8 4)) & 0x0F)
hex_chr.charAt((num >> (j * 8)) & 0x0F);
return str;
}
function str2blks_MD5(str) {
nblk = ((str.length 8) >> 6) 1;
blks = new Array(nblk * 16);
for (i = 0; i < nblk * 16; i ) blks[i] = 0;
for (i = 0; i < str.length; i )
blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
blks[i >> 2] |= 0x80 << ((i % 4) * 8);
blks[nblk * 16 - 2] = str.length * 8;
return blks;
}
function add(x, y) {
var lsw = (x & 0xFFFF) (y & 0xFFFF);
var msw = (x >> 16) (y >> 16) (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function rol(num, cnt) {
return (num << cnt) | (num >>> (32 - cnt));
}
function cmn(q, a, b, x, s, t) {
return add(rol(add(add(a, q), 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);
}
function MD5(str) {
var x = str2blks_MD5(str);
var a = 1732584193;
var b = -271733879;
var c = -1732584194;
var d = 271733878;
for (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 = add(a, olda);
b = add(b, oldb);
c = add(c, oldc);
d = add(d, oldd);
}
return rhex(a) rhex(b) rhex(c) rhex(d);
}
var dates = new Date();
var times = dates.getTime();//时间戳
alert(MD5(times.toString()));
</script>
</body>
</html>
以上, 可直接打开运行, 解决需求,可行。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfbgha
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01