分享JavaScript与Java中MD5使用两个例子


Posted in Javascript onDecember 23, 2015

在网上查了一下,在网上收集了Java与JavaScript中使用的两个例子,试验过,分享下。
1、Java:

package org.bearfly.test.md5;
 
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class MD5Utils {
 public static void main(String[] args){
 System.out.println(getMd5String(""));
 System.out.println(MD5("good"));
 }
 
 
 public final static String MD5(String s) {
 char hexDigits[] = { '0', '1', '2', '3', '4',
    '5', '6', '7', '8', '9',
    'A', 'B', 'C', 'D', 'E', 'F' };
 try {
  byte[] btInput = s.getBytes();
 //获得MD5摘要算法的 MessageDigest 对象
  MessageDigest mdInst = MessageDigest.getInstance("MD5");
 //使用指定的字节更新摘要
  mdInst.update(btInput);
 //获得密文
  byte[] md = mdInst.digest();
 //把密文转换成十六进制的字符串形式
  int j = md.length;
  char str[] = new char[j * 2];
  int k = 0;
  for (int i = 0; i < j; i++) {
  byte byte0 = md[i];
  str[k++] = hexDigits[byte0 >>> 4 & 0xf];
  str[k++] = hexDigits[byte0 & 0xf];
  }
  return new String(str);
 }
 catch (Exception e) {
  e.printStackTrace();
  return null;
 }
 }
 
 
 
 public static String getMd5String(String str){
 MessageDigest messageDigest = null; 
  
 try { 
  messageDigest = MessageDigest.getInstance("MD5"); 
 
  messageDigest.reset(); 
 
  messageDigest.update(str.getBytes("UTF-8")); 
 } catch (NoSuchAlgorithmException e) { 
  System.out.println("NoSuchAlgorithmException caught!"); 
  System.exit(-1); 
 } catch (UnsupportedEncodingException e) { 
  e.printStackTrace(); 
 } 
 
 byte[] byteArray = messageDigest.digest(); 
 
 StringBuffer md5StrBuff = new StringBuffer(); 
 
 for (int i = 0; i < byteArray.length; i++) {  
  if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) 
  md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i])); 
  else 
  md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); 
 } 
 
 return md5StrBuff.toString(); 
 }
}

2、JavaScript:
md5.js

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 you'll 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[i+10], 17, -42063);
 b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
 a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682);
 d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
 c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
 b = md5_ff(b, c, d, a, x[i+15], 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[i+11], 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[i+10], 9 , 38016083);
 c = md5_gg(c, d, a, b, x[i+15], 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[i+14], 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[i+13], 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[i+12], 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[i+11], 16, 1839030562);
 b = md5_hh(b, c, d, a, x[i+14], 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[i+10], 23, -1094730640);
 a = md5_hh(a, b, c, d, x[i+13], 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[i+12], 11, -421815835);
 c = md5_hh(c, d, a, b, x[i+15], 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[i+14], 15, -1416354905);
 b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
 a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571);
 d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
 c = md5_ii(c, d, a, b, x[i+10], 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[i+15], 10, -30611744);
 c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
 b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649);
 a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
 d = md5_ii(d, a, b, c, x[i+11], 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[i>>5] |= (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[i>>5] >>> (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[i>>2] >> ((i%4)*8+4)) & 0xF) +
  hex_tab.charAt((binarray[i>>2] >> ((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[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
  | ((binarray[i+2 >> 2] >> 8 * ((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;
}

md5.html

<html>
 <head>
 <title>md5_Test</title>
 <script type="text/javascript" src="md5.js"></script>
 <link rel="stylesheet" type="text/css" href="bearfly.css" />
 </head>
 <body>
 <script type="text/javascript">
  document.write("myPassword MD5: ",hex_md5("md5Test").toUpperCase());
 </script>
 </body>
</html>

补充:javascript 的MD5代码备份,跟java互通

var MD5 = function (string) { 
 
 function RotateLeft(lValue, iShiftBits) { 
  return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)); 
 } 
 
 function AddUnsigned(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); 
  } 
 } 
 
 function F(x,y,z) { return (x & y) | ((~x) & z); } 
 function G(x,y,z) { return (x & z) | (y & (~z)); } 
 function H(x,y,z) { return (x ^ y ^ z); } 
 function I(x,y,z) { return (y ^ (x | (~z))); } 
 
 function FF(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
 
 function GG(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
 
 function HH(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
 
 function II(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
 
 function ConvertToWordArray(string) { 
  var lWordCount; 
  var lMessageLength = string.length; 
  var lNumberOfWords_temp1=lMessageLength + 8; 
  var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; 
  var lNumberOfWords = (lNumberOfWords_temp2+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; 
 }; 
 
 function WordToHex(lValue) { 
  var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; 
  for (lCount = 0;lCount<=3;lCount++) { 
  lByte = (lValue>>>(lCount*8)) & 255; 
  WordToHexValue_temp = "0" + lByte.toString(16); 
  WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); 
  } 
  return WordToHexValue; 
 }; 
 
 function Utf8Encode(string) { 
  string = string.replace(/\r\n/g,"\n"); 
  var utftext = ""; 
 
  for (var n = 0; n < string.length; n++) { 
 
  var c = string.charCodeAt(n); 
 
  if (c < 128) { 
   utftext += String.fromCharCode(c); 
  } 
  else if((c > 127) && (c < 2048)) { 
   utftext += String.fromCharCode((c >> 6) | 192); 
   utftext += String.fromCharCode((c & 63) | 128); 
  } 
  else { 
   utftext += String.fromCharCode((c >> 12) | 224); 
   utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
   utftext += String.fromCharCode((c & 63) | 128); 
  } 
 
  } 
 
  return utftext; 
 }; 
 
 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 temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d); 
 
 return temp.toLowerCase(); 
 }

以上就是本文的全部内容,java、javascript、MD5三者之间的关系,使用,希望对大家的学习有所帮助。

Javascript 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
JQuery验证工具类搜集整理
Jan 16 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
jQuery调用ajax请求的常见方法汇总
Mar 24 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
JS实现标签页切换效果
May 04 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
Vue基于NUXT的SSR详解
Oct 24 Javascript
vue登录路由验证的实现
Dec 13 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
Apr 17 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 Javascript
js前端设计模式优化50%表单校验代码示例
Jun 21 Javascript
js实现正则匹配中文标点符号的方法
Dec 23 #Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 #Javascript
node.js入门实例helloworld详解
Dec 23 #Javascript
基于JavaScript代码实现pc与手机之间的跳转
Dec 23 #Javascript
AngularJS 日期格式化详解
Dec 23 #Javascript
详解JavaScript时间格式化
Dec 23 #Javascript
FullCalendar日历插件应用之数据展现(一)
Dec 23 #Javascript
You might like
截获网站title标签之家内容的例子
2006/10/09 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
javascript中异常处理案例(推荐)
2016/10/03 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
详解Vue中watch的高级用法
2018/05/02 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python使用7z解压apk包的方法
2015/04/18 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
python3 爬取图片的实例代码
2018/11/06 Python
python实现简单多人聊天室
2018/12/11 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
百年校庆节目主持词
2014/03/27 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
mysql函数之截取字符串的实现
2022/08/14 MySQL