-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathGenerateMd5.dart
48 lines (39 loc) · 1.42 KB
/
GenerateMd5.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import 'dart:convert';
import 'dart:typed_data';
import "package:pointycastle/export.dart";
import 'package:convert/convert.dart';
main() {
/* add in pubspec.yaml:
dependencies:
pointycastle: ^3.1.1
*/
printC('Generate a MD5 hash');
printC('\n# # # SECURITY WARNING: This code is provided for achieve # # #');
printC('# # # compatibility between different programming languages. # # #');
printC('# # # It is NOT SECURE - DO NOT USE THIS CODE ANY LONGER ! # # #');
printC('# # # The hash algorithm MD5 is BROKEN. # # #');
printC('# # # DO NOT USE THIS CODE IN PRODUCTION # # #\n');
final plaintext = 'The quick brown fox jumps over the lazy dog';
printC('plaintext: ' + plaintext);
Uint8List md5Value = calculateMd5(plaintext);
printC('\nmd5Value (hex) length: ' + md5Value.length.toString() + ' data: ' + bytesToHex(md5Value));
}
Uint8List calculateMd5(String data) {
var dataToDigest = createUint8ListFromString(data);
var d = Digest('MD5');
return d.process(dataToDigest);
}
String bytesToHex(Uint8List data) {
return hex.encode(data);
}
Uint8List createUint8ListFromString(String s) {
var ret = new Uint8List(s.length);
for (var i = 0; i < s.length; i++) {
ret[i] = s.codeUnitAt(i);
}
return ret;
}
void printC(String newString) {
// for compatibility reasons to FlutterEmptyConsole
print(newString);
}