<script language="JavaScript">
<!--
/**********************************************************
* md.js
*
* A JavaScript implementation of the RSA Data Security, Inc. MD
* Message-Digest Algorithm.
*
* Copyright (C) Paul Johnston 999. Distributed under the LGPL.
***********************************************************/
/* to convert strings to a list of ascii values */
var sAscii = " !\"#$%&'()*+,-./06789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var sAscii = sAscii + "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
/* convert integer to hex string */
var sHex = "06789ABCDEF";
function hex(i)
{
h = "";
for(j = 0; j <= ; j++)
{
h += sHex.charAt((i >> (j * 8 + )) & 0x0F) +
sHex.charAt((i >> (j * 8)) & 0x0F);
}
return h;
}
/* add, handling overflows correctly */
function add(x, y)
{
return ((x&0x7FFFFFFF) + (y&0x7FFFFFFF)) ^ (x&0x80000000) ^ (y&0x80000000);
}
/* MD rounds functions */
function R(A, B, C, D, X, S, T)
{
q = add(add(A, (B & C) | (~B & D)), add(X, T));
return add((q << S) | ((q >> ( - S)) & (Math.pow(, S) - )), B);
}
function R(A, B, C, D, X, S, T)
{
q = add(add(A, (B & D) | (C & ~D)), add(X, T));
return add((q << S) | ((q >> ( - S)) & (Math.pow(, S) - )), B);
}
function R(A, B, C, D, X, S, T)
{
q = add(add(A, B ^ C ^ D), add(X, T));
return add((q << S) | ((q >> ( - S)) & (Math.pow(, S) - )), B);
}
function R(A, B, C, D, X, S, T)
{
q = add(add(A, C ^ (B | ~D)), add(X, T));
return add((q << S) | ((q >> ( - S)) & (Math.pow(, S) - )), B);
}
/* main entry point */
function calcMD(sInp) {
/* Calculate length in machine words, including padding */
wLen = (((sInp.length + 8) >> 6) + ) << ;
var X = new Array(wLen);
/* Convert string to array of words */
j = ;
for (i = 0; (i * ) < sInp.length; i++)
{
X[i] = 0;
for (j = 0; (j < ) && ((j + i * ) < sInp.length); j++)
{
X[i] += (sAscii.indexOf(sInp.charAt((i * ) + j)) + ) << (j * 8);
}
}
/* Append padding bits and length */
if (j == )
{
X[i++] = 0x80;
}
else
{
X[i - ] += 0x80 << (j * 8);
}
for(; i < wLen; i++) { X[i] = 0; }
X[wLen - ] = sInp.length * 8;
/* hard-coded initial values */
a = 0x670;
b = 0xefcdab89;
c = 0x98badcfe;
d = 0x076;
/* Process each 6-word block in turn */
for (i = 0; i < wLen; i += 6) {
aO = a;
bO = b;
cO = c;
dO = d;
a = R(a, b, c, d, X[i+ 0], 7 , 0xd76aa78);
d = R(d, a, b, c, X[i+ ], , 0xe8c7b76);
c = R(c, d, a, b, X[i+ ], 7, 0x070db);
b = R(b, c, d, a, X[i+ ], , 0xcbdceee);
a = R(a, b, c, d, X[i+ ], 7 , 0xf7c0faf);
d = R(d, a, b, c, X[i+ ], , 0x787c6a);
c = R(c, d, a, b, X[i+ 6], 7, 0xa806);
b = R(b, c, d, a, X[i+ 7], , 0xfd690);
a = R(a, b, c, d, X[i+ 8], 7 , 0x698098d8);
d = R(d, a, b, c, X[i+ 9], , 0x8bf7af);
c = R(c, d, a, b, X[i+0], 7, 0xffffbb);
b = R(b, c, d, a, X[i+], , 0x89cd7be);
a = R(a, b, c, d, X[i+], 7 , 0x6b90);
d = R(d, a, b, c, X[i+], , 0xfd9879);
c = R(c, d, a, b, X[i+], 7, 0xa6798e);
b = R(b, c, d, a, X[i+], , 0x9b08);
a = R(a, b, c, d, X[i+ ], , 0xf6e6);
d = R(d, a, b, c, X[i+ 6], 9 , 0xc00b0);
c = R(c, d, a, b, X[i+], , 0x6ea);
b = R(b, c, d, a, X[i+ 0], 0, 0xe9b6c7aa);
a = R(a, b, c, d, X[i+ ], , 0xd6f0d);
d = R(d, a, b, c, X[i+0], 9 , 0x);
c = R(c, d, a, b, X[i+], , 0xd8ae68);
b = R(b, c, d, a, X[i+ ], 0, 0xe7dfbc8);
a = R(a, b, c, d, X[i+ 9], , 0xecde6);
d = R(d, a, b, c, X[i+], 9 , 0xc707d6);
c = R(c, d, a, b, X[i+ ], , 0xfd0d87);
b = R(b, c, d, a, X[i+ 8], 0, 0xaed);
a = R(a, b, c, d, X[i+], , 0xa9ee90);
d = R(d, a, b, c, X[i+ ], 9 , 0xfcefaf8);
c = R(c, d, a, b, X[i+ 7], , 0x676f0d9);
b = R(b, c, d, a, X[i+], 0, 0x8dac8a);
a = R(a, b, c, d, X[i+ ], , 0xfffa9);
d = R(d, a, b, c, X[i+ 8], , 0x877f68);
c = R(c, d, a, b, X[i+], 6, 0x6d9d6);
b = R(b, c, d, a, X[i+], , 0xfde80c);
a = R(a, b, c, d, X[i+ ], , 0xabeea);
d = R(d, a, b, c, X[i+ ], , 0xbdecfa9);
c = R(c, d, a, b, X[i+ 7], 6, 0xf6bbb60);
b = R(b, c, d, a, X[i+0], , 0xbebfbc70);
a = R(a, b, c, d, X[i+], , 0x89b7ec6);
d = R(d, a, b, c, X[i+ 0], , 0xeaa7fa);
c = R(c, d, a, b, X[i+ ], 6, 0xdef08);
b = R(b, c, d, a, X[i+ 6], , 0x88d0);
a = R(a, b, c, d, X[i+ 9], , 0xd9dd09);
d = R(d, a, b, c, X[i+], , 0xe6db99e);
c = R(c, d, a, b, X[i+], 6, 0xfa7cf8);
b = R(b, c, d, a, X[i+ ], , 0xcac66);
a = R(a, b, c, d, X[i+ 0], 6 , 0xf9);
d = R(d, a, b, c, X[i+ 7], 0, 0xaff97);
c = R(c, d, a, b, X[i+], , 0xab9a7);
b = R(b, c, d, a, X[i+ ], , 0xfc9a09);
a = R(a, b, c, d, X[i+], 6 , 0x6b9c);
d = R(d, a, b, c, X[i+ ], 0, 0x8f0ccc9);
c = R(c, d, a, b, X[i+0], , 0xffeff7d);
b = R(b, c, d, a, X[i+ ], , 0x88dd);
a = R(a, b, c, d, X[i+ 8], 6 , 0x6fa87ef);
d = R(d, a, b, c, X[i+], 0, 0xfece6e0);
c = R(c, d, a, b, X[i+ 6], , 0xa0);
b = R(b, c, d, a, X[i+], , 0xe08a);
a = R(a, b, c, d, X[i+ ], 6 , 0xf77e8);
d = R(d, a, b, c, X[i+], 0, 0xbdaf);
c = R(c, d, a, b, X[i+ ], , 0xad7dbb);
b = R(b, c, d, a, X[i+ 9], , 0xeb86d9);
a = add(a, aO);
b = add(b, bO);
c = add(c, cO);
d = add(d, dO);
}
return hex(a) + hex(b) + hex(c) + hex(d);
}
alert(hex("6"))
//-->
</script>









