加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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=
而不是我想要的 4QrcOUm6Wau+VuBX8g+IPg==

于是把以前用的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;
		}
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读