Javascript Course

The md5() function (presented in this page) can be used in JavaScript to calculate the MD5 hash of a string. Returns the hash as a 32-character hexadecimal number.


Code of the md5() function

/**
* MD5 (Message-Digest Algorithm)
* http://www.webtoolkit.info/
**/

function md5(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();
}
- Usage:
1. Copy the md5() function into your JavaScript script.
2. To get the MD5 hash of a string, calls the md5() function:   md5('string'); .

- Example. The string entered into an input text field will be encrypted with MD5, and added into another input form field.
<h4>Example JavaScript MD5</h4>

<form action='#' method='post'>
 Enter a text:<br/>
 <input type='text' name='strex' id='strex' size='20' /> <input type='button' id='codemd5' value='Get MD5' /><br>
 MD5 hash string:<br>
 <input type='text' name='strmd5' id='strmd5' size='33' />
</form>

<script>
//code of the md5() function
function md5(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();}

// register onclick events for 'Get MD5' button
document.getElementById('codemd5').onclick = function() {
 var txt_string = document.getElementById('strex').value; // gets data from input text

 // encrypts data and adds it in #strmd5 element
 document.getElementById('strmd5').value = md5(txt_string);
 return false;
}
</script>
Demo:
Enter a text:

MD5 hash string:

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
What attribute makes an option from <select> selected?
checked="checked" selected="selected" disabled="disabled"
<select name="a_name">
 <option value="val1">Option 1</option>
 <option value="val2" selected="selected">Option 2</option>
</select>
What CSS value allows to create color gradients for background?
contain repeat-x linear-gradient
#id {
  background: linear-gradient(top left, #1f1, #fff, #11f);
}
What statement creates an array in JavaScript?
[] {} new Object()
var arr = [1, "CoursesWeb.net", "MarPlo.net"];
alert(arr[2]);
Indicate the PHP function used to redirect to other page.
function() header() switch()
header("Location: http://coursesweb.net/");
exit;
MD5 hash string in JavaScript

Last accessed pages

  1. Get Attribute (ID, Class, Name, Title, Src) with jQuery (67904)
  2. Add text between two DIV tags (1805)
  3. Get and Modify content of an Iframe (23101)
  4. Bind Tool and Control Points (3358)
  5. Add data from form in text file in JSON format (12515)

Popular pages this month

  1. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (56)
  2. JavaScript Course - Free lessons (42)
  3. Read Excel file data in PHP - PhpExcelReader (38)
  4. HTML Course - Free Lessons (37)
  5. PHP-MySQL free course, online tutorials PHP MySQL code (35)