沈阳市工伤网站做实,住房和城乡建设部网站职称查询,济南网络科技有限公司有哪些,如何在外管局网站做付汇延期1. 说明 很多的时候是避免不了注册登录这一关的#xff0c;但是一般的注册是没有任何的难度的#xff0c;无非就是一些简单的获取用户输入的数据#xff0c;然后进行简单的校验以后调用接口#xff0c;将数据发送到后端#xff0c;完成一个简单的注册的流程#xff0c;那…1. 说明 很多的时候是避免不了注册登录这一关的但是一般的注册是没有任何的难度的无非就是一些简单的获取用户输入的数据然后进行简单的校验以后调用接口将数据发送到后端完成一个简单的注册的流程那么一般来说密码是不做加密的。但是也有一些数据库里面存放的是加密后的密码这样有一个比较安全的地方在于即使黑客将用户输入的文本密码得到了也不知道具体是什么因为密码是经过加密的。 js的加密没特别多的办法常见的就三种 MD5加密、Base64加密和shal加密那么今天就将这三种的用法写一下。
2. MD5
2.1. md5.js
/** A JavaScript implementation of the RSA Data Security, Inc. MD5 Message* Digest Algorithm, as defined in RFC 1321.* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet* Distributed under the BSD License* See http://pajhome.org.uk/crypt/md5 for more info.*//** Configurable variables. You may need to tweak these to be compatible with* the server-side, but the defaults work in most cases.*/
var hexcase 0; /* hex output format. 0 - lowercase; 1 - uppercase */
var b64pad ; /* base-64 pad character. for strict RFC compliance */
var chrsz 8; /* bits per input character. 8 - ASCII; 16 - Unicode *//** These are the functions youll usually want to call* They take string arguments and return either hex or base-64 encoded strings*/
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }/** Perform a simple self-test to see if the VM is working*/
function md5_vm_test()
{return hex_md5(abc) 900150983cd24fb0d6963f7d28e17f72;
}/** Calculate the MD5 of an array of little-endian words, and a bit length*/
function core_md5(x, len)
{/* append padding */x[len 5] | 0x80 ((len) % 32);x[(((len 64) 9) 4) 14] len;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 md5_ff(a, b, c, d, x[i 0], 7 , -680876936);d md5_ff(d, a, b, c, x[i 1], 12, -389564586);c md5_ff(c, d, a, b, x[i 2], 17, 606105819);b md5_ff(b, c, d, a, x[i 3], 22, -1044525330);a md5_ff(a, b, c, d, x[i 4], 7 , -176418897);d md5_ff(d, a, b, c, x[i 5], 12, 1200080426);c md5_ff(c, d, a, b, x[i 6], 17, -1473231341);b md5_ff(b, c, d, a, x[i 7], 22, -45705983);a md5_ff(a, b, c, d, x[i 8], 7 , 1770035416);d md5_ff(d, a, b, c, x[i 9], 12, -1958414417);c md5_ff(c, d, a, b, x[i10], 17, -42063);b md5_ff(b, c, d, a, x[i11], 22, -1990404162);a md5_ff(a, b, c, d, x[i12], 7 , 1804603682);d md5_ff(d, a, b, c, x[i13], 12, -40341101);c md5_ff(c, d, a, b, x[i14], 17, -1502002290);b md5_ff(b, c, d, a, x[i15], 22, 1236535329);a md5_gg(a, b, c, d, x[i 1], 5 , -165796510);d md5_gg(d, a, b, c, x[i 6], 9 , -1069501632);c md5_gg(c, d, a, b, x[i11], 14, 643717713);b md5_gg(b, c, d, a, x[i 0], 20, -373897302);a md5_gg(a, b, c, d, x[i 5], 5 , -701558691);d md5_gg(d, a, b, c, x[i10], 9 , 38016083);c md5_gg(c, d, a, b, x[i15], 14, -660478335);b md5_gg(b, c, d, a, x[i 4], 20, -405537848);a md5_gg(a, b, c, d, x[i 9], 5 , 568446438);d md5_gg(d, a, b, c, x[i14], 9 , -1019803690);c md5_gg(c, d, a, b, x[i 3], 14, -187363961);b md5_gg(b, c, d, a, x[i 8], 20, 1163531501);a md5_gg(a, b, c, d, x[i13], 5 , -1444681467);d md5_gg(d, a, b, c, x[i 2], 9 , -51403784);c md5_gg(c, d, a, b, x[i 7], 14, 1735328473);b md5_gg(b, c, d, a, x[i12], 20, -1926607734);a md5_hh(a, b, c, d, x[i 5], 4 , -378558);d md5_hh(d, a, b, c, x[i 8], 11, -2022574463);c md5_hh(c, d, a, b, x[i11], 16, 1839030562);b md5_hh(b, c, d, a, x[i14], 23, -35309556);a md5_hh(a, b, c, d, x[i 1], 4 , -1530992060);d md5_hh(d, a, b, c, x[i 4], 11, 1272893353);c md5_hh(c, d, a, b, x[i 7], 16, -155497632);b md5_hh(b, c, d, a, x[i10], 23, -1094730640);a md5_hh(a, b, c, d, x[i13], 4 , 681279174);d md5_hh(d, a, b, c, x[i 0], 11, -358537222);c md5_hh(c, d, a, b, x[i 3], 16, -722521979);b md5_hh(b, c, d, a, x[i 6], 23, 76029189);a md5_hh(a, b, c, d, x[i 9], 4 , -640364487);d md5_hh(d, a, b, c, x[i12], 11, -421815835);c md5_hh(c, d, a, b, x[i15], 16, 530742520);b md5_hh(b, c, d, a, x[i 2], 23, -995338651);a md5_ii(a, b, c, d, x[i 0], 6 , -198630844);d md5_ii(d, a, b, c, x[i 7], 10, 1126891415);c md5_ii(c, d, a, b, x[i14], 15, -1416354905);b md5_ii(b, c, d, a, x[i 5], 21, -57434055);a md5_ii(a, b, c, d, x[i12], 6 , 1700485571);d md5_ii(d, a, b, c, x[i 3], 10, -1894986606);c md5_ii(c, d, a, b, x[i10], 15, -1051523);b md5_ii(b, c, d, a, x[i 1], 21, -2054922799);a md5_ii(a, b, c, d, x[i 8], 6 , 1873313359);d md5_ii(d, a, b, c, x[i15], 10, -30611744);c md5_ii(c, d, a, b, x[i 6], 15, -1560198380);b md5_ii(b, c, d, a, x[i13], 21, 1309151649);a md5_ii(a, b, c, d, x[i 4], 6 , -145523070);d md5_ii(d, a, b, c, x[i11], 10, -1120210379);c md5_ii(c, d, a, b, x[i 2], 15, 718787259);b md5_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 Array(a, b, c, d);}/** These functions implement the four basic operations the algorithm uses.*/
function md5_cmn(q, a, b, x, s, t)
{return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{return md5_cmn((b c) | ((~b) d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{return md5_cmn((b d) | (c (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}/** Calculate the HMAC-MD5, of a key and some data*/
function core_hmac_md5(key, data)
{var bkey str2binl(key);if(bkey.length 16) bkey core_md5(bkey, key.length * chrsz);var ipad Array(16), opad Array(16);for(var i 0; i 16; i){ipad[i] bkey[i] ^ 0x36363636;opad[i] bkey[i] ^ 0x5C5C5C5C;}var hash core_md5(ipad.concat(str2binl(data)), 512 data.length * chrsz);return core_md5(opad.concat(hash), 512 128);
}/** 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 bit_rol(num, cnt)
{return (num cnt) | (num (32 - cnt));
}/** Convert a string to an array of little-endian words* If chrsz is ASCII, characters 255 have their hi-byte silently ignored.*/
function str2binl(str)
{var bin Array();var mask (1 chrsz) - 1;for(var i 0; i str.length * chrsz; i chrsz)bin[i5] | (str.charCodeAt(i / chrsz) mask) (i%32);return bin;
}/** Convert an array of little-endian words to a string*/
function binl2str(bin)
{var str ;var mask (1 chrsz) - 1;for(var i 0; i bin.length * 32; i chrsz)str String.fromCharCode((bin[i5] (i % 32)) mask);return str;
}/** Convert an array of little-endian words to a hex string.*/
function binl2hex(binarray)
{var hex_tab hexcase ? 0123456789ABCDEF : 0123456789abcdef;var str ;for(var i 0; i binarray.length * 4; i){str hex_tab.charAt((binarray[i2] ((i%4)*84)) 0xF) hex_tab.charAt((binarray[i2] ((i%4)*8 )) 0xF);}return str;
}/** Convert an array of little-endian words to a base-64 string*/
function binl2b64(binarray)
{var tab ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/;var str ;for(var i 0; i binarray.length * 4; i 3){var triplet (((binarray[i 2] 8 * ( i %4)) 0xFF) 16)| (((binarray[i1 2] 8 * ((i1)%4)) 0xFF) 8 )| ((binarray[i2 2] 8 * ((i2)%4)) 0xFF);for(var j 0; j 4; j){if(i * 8 j * 6 binarray.length * 32) str b64pad;else str tab.charAt((triplet 6*(3-j)) 0x3F);}}return str;
}
/**使用 方法 : hex_md5(123456);* 最好用 用户名(手机号)和密码同时 加密产生密文,这样存在数据库里的相同密码的密文就不一样了
*/2.2. test.html script typetext/javascript src../static/helper/crypto-js.js/scriptscript typetext/javascriptconsole.log(MD5加密, hex_md5(123456));
/script3. base64
3.1. base64.js
**var Base64{_keyStr:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/,encode:function(e){var t;var n,r,i,s,o,u,a;var f0;eBase64._utf8_encode(e);while(fe.length){ne.charCodeAt(f);re.charCodeAt(f);ie.charCodeAt(f);sn2;o(n3)4|r4;u(r15)2|i6;ai63;if(isNaN(r)){ua64}else if(isNaN(i)){a64}ttthis._keyStr.charAt(s)this._keyStr.charAt(o)this._keyStr.charAt(u)this._keyStr.charAt(a)}return t},decode:function(e){var t;var n,r,i;var s,o,u,a;var f0;ee.replace(/[^A-Za-z0-9/]/g,);while(fe.length){sthis._keyStr.indexOf(e.charAt(f));othis._keyStr.indexOf(e.charAt(f));uthis._keyStr.indexOf(e.charAt(f));athis._keyStr.indexOf(e.charAt(f));ns2|o4;r(o15)4|u2;i(u3)6|a;ttString.fromCharCode(n);if(u!64){ttString.fromCharCode(r)}if(a!64){ttString.fromCharCode(i)}}tBase64._utf8_decode(t);return t},_utf8_encode:function(e){ee.replace(/rn/g,n);var t;for(var n0;ne.length;n){var re.charCodeAt(n);if(r128){tString.fromCharCode(r)}else if(r127r2048){tString.fromCharCode(r6|192);tString.fromCharCode(r63|128)}else{tString.fromCharCode(r12|224);tString.fromCharCode(r663|128);tString.fromCharCode(r63|128)}}return t},_utf8_decode:function(e){var t;var n0;var rc1c20;while(ne.length){re.charCodeAt(n);if(r128){tString.fromCharCode(r);n}else if(r191r224){c2e.charCodeAt(n1);tString.fromCharCode((r31)6|c263);n2}else{c2e.charCodeAt(n1);c3e.charCodeAt(n2);tString.fromCharCode((r15)12|(c263)6|c363);n3}}return t}};
**3.2. test.html script typetext/javascript src../static/helper/base64.js/scriptvar password 123456;var encypass Base64.encode(password);var decryptpass Base64.decode(encypass);if(e 1){console.log(加密之前的密码是password);console.log(加密之后的结果是encypass);}else if(e 2){console.log(解密之前的结果是encypass);console.log(解密之后的结果是decryptpass);}4. sha1
4.1. sha1.js
var hexcase 0; /* 十六进制输出格式。0 -小写1 -大写 */
var b64pad ; /* base- 64填充字符。“”表示严格的RFC合规性 */
var chrsz 8; /* 每个输入字符的位数。8 - ASCII16 -统一码 */
function hex_sha1(s) {return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
}function b64_sha1(s) {return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
}function str_sha1(s) {return binb2str(core_sha1(str2binb(s), s.length * chrsz));
}function hex_hmac_sha1(key, data) {return binb2hex(core_hmac_sha1(key, data));
}function b64_hmac_sha1(key, data) {return binb2b64(core_hmac_sha1(key, data));
}function str_hmac_sha1(key, data) {return binb2str(core_hmac_sha1(key, data));
}
function sha1_vm_test() {return hex_sha1(abc) a9993e364706816aba3e25717850c26c9cd0d89d;
}
function core_sha1(x, len) {x[len 5] | 0x80 (24 - len % 32);x[((len 64 9) 4) 15] len;var w Array(80);var a 1732584193;var b -271733879;var c -1732584194;var d 271733878;var e -1009589776;for (var i 0; i x.length; i 16) {var olda a;var oldb b;var oldc c;var oldd d;var olde e;for (var j 0; j 80; j) {if (j 16) w[j] x[i j];else w[j] rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);var t safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));e d;d c;c rol(b, 30);b a;a t;}a safe_add(a, olda);b safe_add(b, oldb);c safe_add(c, oldc);d safe_add(d, oldd);e safe_add(e, olde);}return Array(a, b, c, d, e);}
function sha1_ft(t, b, c, d) {if (t 20) return (b c) | ((~b) d);if (t 40) return b ^ c ^ d;if (t 60) return (b c) | (b d) | (c d);return b ^ c ^ d;
}
function sha1_kt(t) {return (t 20) ? 1518500249 : (t 40) ? 1859775393 : (t 60) ? -1894007588 : -899497514;
}
function core_hmac_sha1(key, data) {var bkey str2binb(key);if (bkey.length 16) bkey core_sha1(bkey, key.length * chrsz);var ipad Array(16),opad Array(16);for (var i 0; i 16; i) {ipad[i] bkey[i] ^ 0x36363636;opad[i] bkey[i] ^ 0x5C5C5C5C;}var hash core_sha1(ipad.concat(str2binb(data)), 512 data.length * chrsz);return core_sha1(opad.concat(hash), 512 160);
}
function safe_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 str2binb(str) {var bin Array();var mask (1 chrsz) - 1;for (var i 0; i str.length * chrsz; i chrsz)bin[i 5] | (str.charCodeAt(i / chrsz) mask) (24 - i % 32);return bin;
}
function binb2str(bin) {var str ;var mask (1 chrsz) - 1;for (var i 0; i bin.length * 32; i chrsz)str String.fromCharCode((bin[i 5] (24 - i % 32)) mask);return str;
}
function binb2hex(binarray) {var hex_tab hexcase ? 0123456789ABCDEF : 0123456789abcdef;var str ;for (var i 0; i binarray.length * 4; i) {str hex_tab.charAt((binarray[i 2] ((3 - i % 4) * 8 4)) 0xF) hex_tab.charAt((binarray[i 2] ((3 - i % 4) * 8)) 0xF);}return str;
}
function binb2b64(binarray) {var tab ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/;var str ;for (var i 0; i binarray.length * 4; i 3) {var triplet (((binarray[i 2] 8 * (3 - i % 4)) 0xFF) 16) | (((binarray[i 1 2] 8 * (3 - (i 1) % 4)) 0xFF) 8) | ((binarray[i 2 2] 8 * (3 - (i 2) % 4)) 0xFF);for (var j 0; j 4; j) {if (i * 8 j * 6 binarray.length * 32) str b64pad;else str tab.charAt((triplet 6 * (3 - j)) 0x3F);}}return str;
}
4.2. test.html script typetext/javascript src../static/helper/sha1.js/scriptvar password 123456;console.log(没有加密之前的是 password);var shalpassword hex_sha1(password);console.log(hex_sha1方式加密后是 shalpassword);var shalpassword b64_sha1(password);console.log(b64_sha1方式加密后是 shalpassword);var shalpassword str_sha1(password);console.log(str_sha1方式加密后是 shalpassword);