Index: lib/src/md5.dart |
diff --git a/lib/src/md5.dart b/lib/src/md5.dart |
index 077b218cac6bafbe931bbdaead3ed084e6e6bad9..e1caf88fa1448da191c82316aef22aad74b871cd 100644 |
--- a/lib/src/md5.dart |
+++ b/lib/src/md5.dart |
@@ -10,18 +10,22 @@ import 'hash.dart'; |
import 'hash_base.dart'; |
import 'utils.dart'; |
-/** |
- * MD5 hash function implementation. |
- * |
- * WARNING: MD5 has known collisions and should only be used when |
- * required for backwards compatibility. |
- */ |
+/// An implementation of the [MD5][rfc] hash function. |
+/// |
+/// [rfc]: https://tools.ietf.org/html/rfc1321 |
+/// |
+/// **Warning**: MD5 has known collisions and should only be used when required |
+/// for backwards compatibility. |
abstract class MD5 implements Hash { |
factory MD5() = _MD5; |
MD5 newInstance(); |
} |
+/// The concrete implementation of [MD5]. |
+/// |
+/// This is separate so that it can extend [HashBase] without leaking additional |
+/// public memebers. |
class _MD5 extends HashBase implements MD5 { |
_MD5() : super(16, 4, false) { |
h[0] = 0x67452301; |
@@ -30,11 +34,12 @@ class _MD5 extends HashBase implements MD5 { |
h[3] = 0x10325476; |
} |
- // Returns a new instance of this Hash. |
MD5 newInstance() { |
return new _MD5(); |
} |
+ /// Data from a non-linear mathematical function that functions as |
+ /// reproducible noise. |
static const _k = const [ |
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, |
0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, |
@@ -49,6 +54,7 @@ class _MD5 extends HashBase implements MD5 { |
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 |
]; |
+ /// Per-round shift amounts. |
static const _r = const [ |
07, 12, 17, 22, 07, 12, 17, 22, 07, 12, 17, 22, 07, 12, 17, 22, 05, 09, 14, |
20, 05, 09, 14, 20, 05, 09, 14, 20, 05, 09, 14, 20, 04, 11, 16, 23, 04, 11, |
@@ -56,8 +62,6 @@ class _MD5 extends HashBase implements MD5 { |
10, 15, 21, 06, 10, 15, 21 |
]; |
- // Compute one iteration of the MD5 algorithm with a chunk of |
- // 16 32-bit pieces. |
void updateHash(Uint32List m) { |
assert(m.length == 16); |