Index: lib/src/md5.dart |
diff --git a/lib/src/md5.dart b/lib/src/md5.dart |
index 08bc01222936fae0b4e942655a5f9cd6fcf9d3b2..077b218cac6bafbe931bbdaead3ed084e6e6bad9 100644 |
--- a/lib/src/md5.dart |
+++ b/lib/src/md5.dart |
@@ -2,7 +2,13 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-part of crypto; |
+library crypto.md5; |
+ |
+import 'dart:typed_data'; |
+ |
+import 'hash.dart'; |
+import 'hash_base.dart'; |
+import 'utils.dart'; |
/** |
* MD5 hash function implementation. |
@@ -10,17 +16,23 @@ part of crypto; |
* WARNING: MD5 has known collisions and should only be used when |
* required for backwards compatibility. |
*/ |
-class MD5 extends _HashBase { |
- MD5() : super(16, 4, false) { |
- _h[0] = 0x67452301; |
- _h[1] = 0xefcdab89; |
- _h[2] = 0x98badcfe; |
- _h[3] = 0x10325476; |
+abstract class MD5 implements Hash { |
+ factory MD5() = _MD5; |
+ |
+ MD5 newInstance(); |
+} |
+ |
+class _MD5 extends HashBase implements MD5 { |
+ _MD5() : super(16, 4, false) { |
+ h[0] = 0x67452301; |
+ h[1] = 0xefcdab89; |
+ h[2] = 0x98badcfe; |
+ h[3] = 0x10325476; |
} |
// Returns a new instance of this Hash. |
MD5 newInstance() { |
- return new MD5(); |
+ return new _MD5(); |
} |
static const _k = const [ |
@@ -46,43 +58,43 @@ class MD5 extends _HashBase { |
// Compute one iteration of the MD5 algorithm with a chunk of |
// 16 32-bit pieces. |
- void _updateHash(Uint32List m) { |
+ void updateHash(Uint32List m) { |
assert(m.length == 16); |
- var a = _h[0]; |
- var b = _h[1]; |
- var c = _h[2]; |
- var d = _h[3]; |
+ var a = h[0]; |
+ var b = h[1]; |
+ var c = h[2]; |
+ var d = h[3]; |
var t0; |
var t1; |
for (var i = 0; i < 64; i++) { |
if (i < 16) { |
- t0 = (b & c) | ((~b & _MASK_32) & d); |
+ t0 = (b & c) | ((~b & MASK_32) & d); |
t1 = i; |
} else if (i < 32) { |
- t0 = (d & b) | ((~d & _MASK_32) & c); |
+ t0 = (d & b) | ((~d & MASK_32) & c); |
t1 = ((5 * i) + 1) % 16; |
} else if (i < 48) { |
t0 = b ^ c ^ d; |
t1 = ((3 * i) + 5) % 16; |
} else { |
- t0 = c ^ (b | (~d & _MASK_32)); |
+ t0 = c ^ (b | (~d & MASK_32)); |
t1 = (7 * i) % 16; |
} |
var temp = d; |
d = c; |
c = b; |
- b = _add32( |
- b, _rotl32(_add32(_add32(a, t0), _add32(_k[i], m[t1])), _r[i])); |
+ b = add32( |
+ b, rotl32(add32(add32(a, t0), add32(_k[i], m[t1])), _r[i])); |
a = temp; |
} |
- _h[0] = _add32(a, _h[0]); |
- _h[1] = _add32(b, _h[1]); |
- _h[2] = _add32(c, _h[2]); |
- _h[3] = _add32(d, _h[3]); |
+ h[0] = add32(a, h[0]); |
+ h[1] = add32(b, h[1]); |
+ h[2] = add32(c, h[2]); |
+ h[3] = add32(d, h[3]); |
} |
} |