Advertisement
sanych_dv

Untitled

Apr 11th, 2016
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public static function hashBinary( s:ByteArray ):String {
  2.             // initialize the md buffers
  3.             var a:int = 1732584193;
  4.             var b:int = -271733879;
  5.             var c:int = -1732584194;
  6.             var d:int = 271733878;
  7.            
  8.             // variables to store previous values
  9.             var aa:int;
  10.             var bb:int;
  11.             var cc:int;
  12.             var dd:int;
  13.            
  14.             // create the blocks from the string and
  15.             // save the length as a local var to reduce
  16.             // lookup in the loop below
  17.             var x:Array = createBlocks( s );
  18.             var len:int = x.length;
  19.            
  20.             // loop over all of the blocks
  21.             for ( var i:int = 0; i < len; i += 16) {
  22.                 // save previous values
  23.                 aa = a;
  24.                 bb = b;
  25.                 cc = c;
  26.                 dd = d;            
  27.                
  28.                 // Round 1
  29.                 a = ff( a, b, c, d, x[int(i+ 0)],  7, -680876936 );     // 1
  30.                 d = ff( d, a, b, c, x[int(i+ 1)], 12, -389564586 ); // 2
  31.                 c = ff( c, d, a, b, x[int(i+ 2)], 17, 606105819 );  // 3
  32.                 b = ff( b, c, d, a, x[int(i+ 3)], 22, -1044525330 );    // 4
  33.                 a = ff( a, b, c, d, x[int(i+ 4)],  7, -176418897 );     // 5
  34.                 d = ff( d, a, b, c, x[int(i+ 5)], 12, 1200080426 );     // 6
  35.                 c = ff( c, d, a, b, x[int(i+ 6)], 17, -1473231341 );    // 7
  36.                 b = ff( b, c, d, a, x[int(i+ 7)], 22, -45705983 );  // 8
  37.                 a = ff( a, b, c, d, x[int(i+ 8)],  7, 1770035416 );     // 9
  38.                 d = ff( d, a, b, c, x[int(i+ 9)], 12, -1958414417 );    // 10
  39.                 c = ff( c, d, a, b, x[int(i+10)], 17, -42063 );         // 11
  40.                 b = ff( b, c, d, a, x[int(i+11)], 22, -1990404162 );    // 12
  41.                 a = ff( a, b, c, d, x[int(i+12)],  7, 1804603682 );     // 13
  42.                 d = ff( d, a, b, c, x[int(i+13)], 12, -40341101 );  // 14
  43.                 c = ff( c, d, a, b, x[int(i+14)], 17, -1502002290 );    // 15
  44.                 b = ff( b, c, d, a, x[int(i+15)], 22, 1236535329 );     // 16
  45.                
  46.                 // Round 2
  47.                 a = gg( a, b, c, d, x[int(i+ 1)],  5, -165796510 );     // 17
  48.                 d = gg( d, a, b, c, x[int(i+ 6)],  9, -1069501632 );    // 18
  49.                 c = gg( c, d, a, b, x[int(i+11)], 14, 643717713 );  // 19
  50.                 b = gg( b, c, d, a, x[int(i+ 0)], 20, -373897302 );     // 20
  51.                 a = gg( a, b, c, d, x[int(i+ 5)],  5, -701558691 );     // 21
  52.                 d = gg( d, a, b, c, x[int(i+10)],  9, 38016083 );   // 22
  53.                 c = gg( c, d, a, b, x[int(i+15)], 14, -660478335 );     // 23
  54.                 b = gg( b, c, d, a, x[int(i+ 4)], 20, -405537848 );     // 24
  55.                 a = gg( a, b, c, d, x[int(i+ 9)],  5, 568446438 );  // 25
  56.                 d = gg( d, a, b, c, x[int(i+14)],  9, -1019803690 );    // 26
  57.                 c = gg( c, d, a, b, x[int(i+ 3)], 14, -187363961 );     // 27
  58.                 b = gg( b, c, d, a, x[int(i+ 8)], 20, 1163531501 );     // 28
  59.                 a = gg( a, b, c, d, x[int(i+13)],  5, -1444681467 );    // 29
  60.                 d = gg( d, a, b, c, x[int(i+ 2)],  9, -51403784 );  // 30
  61.                 c = gg( c, d, a, b, x[int(i+ 7)], 14, 1735328473 );     // 31
  62.                 b = gg( b, c, d, a, x[int(i+12)], 20, -1926607734 );    // 32
  63.                
  64.                 // Round 3
  65.                 a = hh( a, b, c, d, x[int(i+ 5)],  4, -378558 );    // 33
  66.                 d = hh( d, a, b, c, x[int(i+ 8)], 11, -2022574463 );    // 34
  67.                 c = hh( c, d, a, b, x[int(i+11)], 16, 1839030562 );     // 35
  68.                 b = hh( b, c, d, a, x[int(i+14)], 23, -35309556 );  // 36
  69.                 a = hh( a, b, c, d, x[int(i+ 1)],  4, -1530992060 );    // 37
  70.                 d = hh( d, a, b, c, x[int(i+ 4)], 11, 1272893353 );     // 38
  71.                 c = hh( c, d, a, b, x[int(i+ 7)], 16, -155497632 );     // 39
  72.                 b = hh( b, c, d, a, x[int(i+10)], 23, -1094730640 );    // 40
  73.                 a = hh( a, b, c, d, x[int(i+13)],  4, 681279174 );  // 41
  74.                 d = hh( d, a, b, c, x[int(i+ 0)], 11, -358537222 );     // 42
  75.                 c = hh( c, d, a, b, x[int(i+ 3)], 16, -722521979 );     // 43
  76.                 b = hh( b, c, d, a, x[int(i+ 6)], 23, 76029189 );   // 44
  77.                 a = hh( a, b, c, d, x[int(i+ 9)],  4, -640364487 );     // 45
  78.                 d = hh( d, a, b, c, x[int(i+12)], 11, -421815835 );     // 46
  79.                 c = hh( c, d, a, b, x[int(i+15)], 16, 530742520 );  // 47
  80.                 b = hh( b, c, d, a, x[int(i+ 2)], 23, -995338651 );     // 48
  81.                
  82.                 // Round 4
  83.                 a = ii( a, b, c, d, x[int(i+ 0)],  6, -198630844 );     // 49
  84.                 d = ii( d, a, b, c, x[int(i+ 7)], 10, 1126891415 );     // 50
  85.                 c = ii( c, d, a, b, x[int(i+14)], 15, -1416354905 );    // 51
  86.                 b = ii( b, c, d, a, x[int(i+ 5)], 21, -57434055 );  // 52
  87.                 a = ii( a, b, c, d, x[int(i+12)],  6, 1700485571 );     // 53
  88.                 d = ii( d, a, b, c, x[int(i+ 3)], 10, -1894986606 );    // 54
  89.                 c = ii( c, d, a, b, x[int(i+10)], 15, -1051523 );   // 55
  90.                 b = ii( b, c, d, a, x[int(i+ 1)], 21, -2054922799 );    // 56
  91.                 a = ii( a, b, c, d, x[int(i+ 8)],  6, 1873313359 );     // 57
  92.                 d = ii( d, a, b, c, x[int(i+15)], 10, -30611744 );  // 58
  93.                 c = ii( c, d, a, b, x[int(i+ 6)], 15, -1560198380 );    // 59
  94.                 b = ii( b, c, d, a, x[int(i+13)], 21, 1309151649 );     // 60
  95.                 a = ii( a, b, c, d, x[int(i+ 4)],  6, -145523070 );     // 61
  96.                 d = ii( d, a, b, c, x[int(i+11)], 10, -1120210379 );    // 62
  97.                 c = ii( c, d, a, b, x[int(i+ 2)], 15, 718787259 );  // 63
  98.                 b = ii( b, c, d, a, x[int(i+ 9)], 21, -343485551 );     // 64
  99.  
  100.                 a += aa;
  101.                 b += bb;
  102.                 c += cc;
  103.                 d += dd;
  104.             }
  105.             digest = new ByteArray()
  106.             digest.writeInt(a);
  107.             digest.writeInt(b);
  108.             digest.writeInt(c);
  109.             digest.writeInt(d);
  110.             digest.position = 0;
  111.             // Finish up by concatening the buffers with their hex output
  112.             return IntUtil.toHex( a ) + IntUtil.toHex( b ) + IntUtil.toHex( c ) + IntUtil.toHex( d );
  113.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement