分享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 相关文章推荐
url 特殊字符 传递参数解决方法
Jan 01 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
node.js中的console用法总结
Dec 15 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
初识angular框架后的所思所想
Feb 19 Javascript
vue多级多选菜单组件开发
Sep 08 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
详解JS中的柯里化(currying)
Aug 17 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php模块memcache和memcached区别分析
2011/06/14 PHP
PHP5函数小全(分享)
2013/06/06 PHP
PHP面向对象精要总结
2014/11/07 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
python write无法写入文件的解决方法
2019/01/23 Python
tensorflow的计算图总结
2020/01/12 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
中专生职业生涯规划书范文
2014/01/10 职场文书
小学毕业感言150字
2014/02/05 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
小学生操行评语大全
2014/04/22 职场文书
售后服务承诺书模板
2014/05/21 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python