分享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 相关文章推荐
常用简易JavaScript函数
Apr 09 Javascript
表单的焦点顺序tabindex和对应enter键提交
Jan 04 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
js中call与apply的用法小结
Dec 28 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
ES6学习笔记之Set和Map数据结构详解
Apr 07 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
Dec 10 jQuery
Vue.js递归组件实现组织架构树和选人功能
Jul 04 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
JavaScript中的6种运算符总结
2014/10/16 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
javascript函数特点实例分析
2015/05/14 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Python将string转换到float的实例方法
2019/07/29 Python
python处理document文档保留原样式
2019/09/23 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
大学生考试作弊检讨书
2014/09/21 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
北大自主招生自荐信
2015/03/04 职场文书
导游词之无锡古运河
2019/11/14 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS