Flex Base64 md5 123456后得到4QrcOUm6Wau+VuBX8g+IPg==
发布时间:2020-12-15 03:52:05 所属栏目:百科 来源:网络整理
导读:想在flex前台加密后再传输密码 但是用flex带的as3corelib MD5"123456"后的Base64编码却是ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U= 而不是我想要的 4QrcOUm6Wau+VuBX8g+IPg== 于是把以前用的js直接copy然后稍微修改下就行了 以此做为一个记录 public cl
想在flex前台加密后再传输密码 但是用flex带的as3corelib MD5"123456"后的Base64编码却是ZTEwYWRjMzk0OWJhNTlhYmJlNTZlMDU3ZjIwZjg4M2U= 于是把以前用的js直接copy然后稍微修改下就行了 以此做为一个记录 public class MD5 { private var hexcase:int=0; /* hex output format. 0 - lowercase; 1 - uppercase */ private var b64pad:String="="; /* base-64 pad character. "=" for strict RFC compliance */ private var chrsz:int=8; /* bits per input character. 8 - ASCII; 16 - Unicode */ public function b64_md5(s:String):String { return binl2b64(core_md5(str2binl(s),s.length * chrsz)); } private function core_md5(x:Array,len:int):Array { x[len >> 5]|=0x80 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14]=len; var a:int=1732584193; var b:int=-271733879; var c:int=-1732584194; var d:int=271733878; for (var i:int=0; i < x.length; i+=16) { var olda:int=a; var oldb:int=b; var oldc:int=c; var oldd:int=d; a=md5_ff(a,b,c,d,x[i + 0],7,-680876936); d=md5_ff(d,a,x[i + 1],12,-389564586); c=md5_ff(c,x[i + 2],17,606105819); b=md5_ff(b,x[i + 3],22,-1044525330); a=md5_ff(a,x[i + 4],-176418897); d=md5_ff(d,x[i + 5],1200080426); c=md5_ff(c,x[i + 6],-1473231341); b=md5_ff(b,x[i + 7],-45705983); a=md5_ff(a,x[i + 8],1770035416); d=md5_ff(d,x[i + 9],-1958414417); c=md5_ff(c,x[i + 10],-42063); b=md5_ff(b,x[i + 11],-1990404162); a=md5_ff(a,x[i + 12],1804603682); d=md5_ff(d,x[i + 13],-40341101); c=md5_ff(c,x[i + 14],-1502002290); b=md5_ff(b,x[i + 15],1236535329); a=md5_gg(a,5,-165796510); d=md5_gg(d,9,-1069501632); c=md5_gg(c,14,643717713); b=md5_gg(b,20,-373897302); a=md5_gg(a,-701558691); d=md5_gg(d,38016083); c=md5_gg(c,-660478335); b=md5_gg(b,-405537848); a=md5_gg(a,568446438); d=md5_gg(d,-1019803690); c=md5_gg(c,-187363961); b=md5_gg(b,1163531501); a=md5_gg(a,-1444681467); d=md5_gg(d,-51403784); c=md5_gg(c,1735328473); b=md5_gg(b,-1926607734); a=md5_hh(a,4,-378558); d=md5_hh(d,11,-2022574463); c=md5_hh(c,16,1839030562); b=md5_hh(b,23,-35309556); a=md5_hh(a,-1530992060); d=md5_hh(d,1272893353); c=md5_hh(c,-155497632); b=md5_hh(b,-1094730640); a=md5_hh(a,681279174); d=md5_hh(d,-358537222); c=md5_hh(c,-722521979); b=md5_hh(b,76029189); a=md5_hh(a,-640364487); d=md5_hh(d,-421815835); c=md5_hh(c,530742520); b=md5_hh(b,-995338651); a=md5_ii(a,6,-198630844); d=md5_ii(d,10,1126891415); c=md5_ii(c,15,-1416354905); b=md5_ii(b,21,-57434055); a=md5_ii(a,1700485571); d=md5_ii(d,-1894986606); c=md5_ii(c,-1051523); b=md5_ii(b,-2054922799); a=md5_ii(a,1873313359); d=md5_ii(d,-30611744); c=md5_ii(c,-1560198380); b=md5_ii(b,1309151649); a=md5_ii(a,-145523070); d=md5_ii(d,-1120210379); c=md5_ii(c,718787259); b=md5_ii(b,-343485551); a=safe_add(a,olda); b=safe_add(b,oldb); c=safe_add(c,oldc); d=safe_add(d,oldd); } return [a,d]; } private function md5_cmn(q:int,a:int,b:int,x:int,s:int,t:int):int { return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b); } private function md5_ff(a:int,c:int,d:int,t:int):int { return md5_cmn((b & c) | ((~b) & d),x,s,t); } private function md5_gg(a:int,t:int):int { return md5_cmn((b & d) | (c & (~d)),t); } private function md5_hh(a:int,t:int):int { return md5_cmn(b ^ c ^ d,t); } private function md5_ii(a:int,t:int):int { return md5_cmn(c ^ (b | (~d)),t); } private function safe_add(x:int,y:int):int { var lsw:int=(x & 0xFFFF) + (y & 0xFFFF); var msw:int=(x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } private function bit_rol(num:int,cnt:int):int { return (num << cnt) | (num >>> (32 - cnt)); } private function str2binl(str:String):Array { var bin:Array=new Array(); var mask:int=(1 << chrsz) - 1; for (var i:int=0; i < str.length * chrsz; i+=chrsz) bin[i >> 5]|=(str.charCodeAt(i / chrsz) & mask) << (i % 32); return bin; } private function binl2b64(binarray:Array):String { var tab:String="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str:String=""; for (var i:int=0; i < binarray.length * 4; i+=3) { var triplet:int=(((binarray[i >> 2] >> 8 * (i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * ((i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * ((i + 2) % 4)) & 0xFF); for (var j:int=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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |