Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/05/2009, 08:47
Avatar de lobo_php
lobo_php
 
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 17 años, 4 meses
Puntos: 75
Respuesta: FAQ: encriptar MD5 con javascript

segunda parte:

Código javascript:
Ver original
  1. /*
  2.  * Encode a string as utf-16
  3.  */
  4. function str2rstr_utf16le(input)
  5. {
  6.   var output = "";
  7.   for(var i = 0; i < input.length; i++)
  8.     output += String.fromCharCode( input.charCodeAt(i)        & 0xFF,
  9.                                   (input.charCodeAt(i) >>> 8) & 0xFF);
  10.   return output;
  11. }
  12.  
  13. function str2rstr_utf16be(input)
  14. {
  15.   var output = "";
  16.   for(var i = 0; i < input.length; i++)
  17.     output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF,
  18.                                    input.charCodeAt(i)        & 0xFF);
  19.   return output;
  20. }
  21.  
  22. /*
  23.  * Convert a raw string to an array of little-endian words
  24.  * Characters >255 have their high-byte silently ignored.
  25.  */
  26. function rstr2binl(input)
  27. {
  28.   var output = Array(input.length >> 2);
  29.   for(var i = 0; i < output.length; i++)
  30.     output[i] = 0;
  31.   for(var i = 0; i < input.length * 8; i += 8)
  32.     output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i&#37;32);
  33.   return output;
  34. }
  35.  
  36. /*
  37.  * Convert an array of little-endian words to a string
  38.  */
  39. function binl2rstr(input)
  40. {
  41.   var output = "";
  42.   for(var i = 0; i < input.length * 32; i += 8)
  43.     output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
  44.   return output;
  45. }
  46.  
  47. /*
  48.  * Calculate the MD5 of an array of little-endian words, and a bit length.
  49.  */
  50. function binl_md5(x, len)
  51. {
  52.   /* append padding */
  53.   x[len >> 5] |= 0x80 << ((len) % 32);
  54.   x[(((len + 64) >>> 9) << 4) + 14] = len;
  55.  
  56.   var a =  1732584193;
  57.   var b = -271733879;
  58.   var c = -1732584194;
  59.   var d =  271733878;
  60.  
  61.   for(var i = 0; i < x.length; i += 16)
  62.   {
  63.     var olda = a;
  64.     var oldb = b;
  65.     var oldc = c;
  66.     var oldd = d;
  67.  
  68.     a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
  69.     d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
  70.     c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
  71.     b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
  72.     a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
  73.     d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
  74.     c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
  75.     b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
  76.     a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
  77.     d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
  78.     c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
  79.     b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
  80.     a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
  81.     d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
  82.     c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
  83.     b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
  84.  
  85.     a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
  86.     d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
  87.     c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
  88.     b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
  89.     a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
  90.     d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
  91.     c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
  92.     b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
  93.     a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
  94.     d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
  95.     c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
  96.     b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
  97.     a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
  98.     d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
  99.     c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
  100.     b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
  101.  
  102.     a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
  103.     d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
  104.     c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
  105.     b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
  106.     a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
  107.     d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
  108.     c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
  109.     b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
  110.     a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
  111.     d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
  112.     c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
  113.     b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
  114.     a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
  115.     d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
  116.     c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
  117.     b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
  118.  
  119.     a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
  120.     d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
  121.     c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
  122.     b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
  123.     a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
  124.     d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
  125.     c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
  126.     b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
  127.     a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
  128.     d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
  129.     c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
  130.     b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
  131.     a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
  132.     d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
  133.     c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
  134.     b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
  135.  
  136.     a = safe_add(a, olda);
  137.     b = safe_add(b, oldb);
  138.     c = safe_add(c, oldc);
  139.     d = safe_add(d, oldd);
  140.   }
  141.   return Array(a, b, c, d);
  142. }
  143.  
  144. /*
  145.  * These functions implement the four basic operations the algorithm uses.
  146.  */
  147. function md5_cmn(q, a, b, x, s, t)
  148. {
  149.   return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
  150. }
  151. function md5_ff(a, b, c, d, x, s, t)
  152. {
  153.   return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
  154. }
  155. function md5_gg(a, b, c, d, x, s, t)
  156. {
  157.   return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
  158. }
  159. function md5_hh(a, b, c, d, x, s, t)
  160. {
  161.   return md5_cmn(b ^ c ^ d, a, b, x, s, t);
  162. }
  163. function md5_ii(a, b, c, d, x, s, t)
  164. {
  165.   return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
  166. }
  167.  
  168. /*
  169.  * Add integers, wrapping at 2^32. This uses 16-bit operations internally
  170.  * to work around bugs in some JS interpreters.
  171.  */
  172. function safe_add(x, y)
  173. {
  174.   var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  175.   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  176.   return (msw << 16) | (lsw & 0xFFFF);
  177. }
  178.  
  179. /*
  180.  * Bitwise rotate a 32-bit number to the left.
  181.  */
  182. function bit_rol(num, cnt)
  183. {
  184.   return (num << cnt) | (num >>> (32 - cnt));
  185. }
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175