Heim  >  Artikel  >  Web-Frontend  >  js implementiert die Codefreigabe des MD5-Verschlüsselungs-Plug-Ins

js implementiert die Codefreigabe des MD5-Verschlüsselungs-Plug-Ins

小云云
小云云Original
2018-02-24 14:28:374698Durchsuche

Dieser Artikel teilt Ihnen hauptsächlich die js-Implementierung des md5-Verschlüsselungs-Plug-in-Codes mit und hofft, allen zu helfen.

//使用方法:
//引入文件<script src="yourURL/MD5.js" type="text/javascript" charset="utf-8"></script>
//var MD5=MD5.createMD5String(yourSrting);(
	function(globle,factory){//判断执行环境是否为浏览器
		typeof window != "undefined" ? factory() : concole.log("当前环境不支持该插件");
	}
)(this,function(){
	//创建并实例化MD5对象并让他可以调用自身方法
		function MD5(string){
			this._this = this;
   			return this;
		}
		this.MD5=new MD5;	
		MD5.prototype.createMD5String=function(string) {	
		var x = Array();		
		var k, AA, BB, CC, DD, a, b, c, d;		
		var S11=7, S12=12, S13=17, S14=22;		
		var S21=5, S22=9 , S23=14, S24=20;	
		var S31=4, S32=11, S33=16, S34=23;		
		var S41=6, S42=10, S43=15, S44=21;		
		string = uTF8Encode(string);	
		x = convertToWordArray(string);		
		a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;		
		for (k = 0; k < x.length; k += 16) {			
			AA = a; BB = b; CC = c; DD = d;		
			a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);		
			d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);		
			c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);		
			b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);		
			a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);		
			d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);		
			c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);		
			b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);		
			a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);	
			d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);		
			c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);		
			b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);		
			a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);	
			d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);		
			c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);		
			b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);	
			a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);		
			d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);		
			c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);		
			b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);		
			a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);		
			d = GG(d, a, b, c, x[k+10], S22, 0x2441453);	
			c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);	
			b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);	
			a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);	
			d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);	
			c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);	
			b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);	
			a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);	
			d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);	
			c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);		
			b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);	
			a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);		
			d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);		
			c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);		
			b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);		
			a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);	
			d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);		
			c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);	
			b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);	
			a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);		
			d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);		
			c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);	
			b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);		
			a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);		
			d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);	
			c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);	
			b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);	
			a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);	
			d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);		
			c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);		
			b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);		
			a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);	
			d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);	
			c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);	
			b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);	
			a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);		
			d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);		
			c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);		
			b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);	
			a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);		
			d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);		
			c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);		
			b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);	
			a = addUnsigned(a, AA);	
			b = addUnsigned(b, BB);		
			c = addUnsigned(c, CC);		
			d = addUnsigned(d, DD);		
		}			
		var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);			
		return tempValue.toLowerCase();		
		}
		var rotateLeft = function(lValue, iShiftBits) {
			return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
		}
		var addUnsigned = function(lX, lY) {
			var lX4, lY4, lX8, lY8, lResult;
			lX8 = (lX & 0x80000000);
			lY8 = (lY & 0x80000000);
			lX4 = (lX & 0x40000000);
			lY4 = (lY & 0x40000000);
			lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
			if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
			if (lX4 | lY4) {
				if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
				else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
			} else {
				return (lResult ^ lX8 ^ lY8);
			}
		}
	var F = function(x, y, z) {
		return (x & y) | ((~ x) & z);	
	}			
	var G = function(x, y, z) {
		return (x & z) | (y & (~ z));	
	}				
	var H = function(x, y, z) {	
		return (x ^ y ^ z);	
	}		
	var I = function(x, y, z) {		
	return (y ^ (x | (~ z)));
	}		
	var FF = function(a, b, c, d, x, s, ac) {	
		a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);	
	};			
	var GG = function(a, b, c, d, x, s, ac) {		
		a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));	
		return addUnsigned(rotateLeft(a, s), b);
	};	
	var HH = function(a, b, c, d, x, s, ac) {
		a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);	
	};	
	var II = function(a, b, c, d, x, s, ac) {	
		a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
		return addUnsigned(rotateLeft(a, s), b);
	};
	var convertToWordArray = function(string) {
		var lWordCount;	
		var lMessageLength = string.length;	
		var lNumberOfWordsTempOne = lMessageLength + 8;	
		var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;	
		var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;	
		var lWordArray = Array(lNumberOfWords - 1);	
		var lBytePosition = 0;
		var lByteCount = 0;	
		while (lByteCount < lMessageLength) {	
			lWordCount = (lByteCount - (lByteCount % 4)) / 4;	
			lBytePosition = (lByteCount % 4) * 8;	
			lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
			lByteCount++;	
		}
		lWordCount = (lByteCount - (lByteCount % 4)) / 4;	
		lBytePosition = (lByteCount % 4) * 8;	
		lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
		lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
		lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
		return lWordArray;
	};
	var wordToHex = function(lValue) {
		var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
		for (lCount = 0; lCount <= 3; lCount++) {
			lByte = (lValue >>> (lCount * 8)) & 255;
			WordToHexValueTemp = "0" + lByte.toString(16);
			WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
		}
		return WordToHexValue;
	};
	var uTF8Encode = function(string) {
		string = string.toString().replace(/\x0d\x0a/g, "\x0a");
		var output = "";
		for (var n = 0; n < string.length; n++) {	
			var c = string.charCodeAt(n);
			if (c < 128) {	
				output += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				output += String.fromCharCode((c >> 6) | 192);
				output += String.fromCharCode((c & 63) | 128);
			} else {
				output += String.fromCharCode((c >> 12) | 224);	
				output += String.fromCharCode(((c >> 6) & 63) | 128);
				output += String.fromCharCode((c & 63) | 128);	
			}
		}
		return output;
	};	
})

Verwandte Empfehlungen:

Eine einfache Möglichkeit, die MD5-Verschlüsselung mit jQuery zu implementieren

MD5-Verschlüsselungsmethode in JS

So verwenden Sie die MD5-Verschlüsselung in js

Das obige ist der detaillierte Inhalt vonjs implementiert die Codefreigabe des MD5-Verschlüsselungs-Plug-Ins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn