Implementation
Uint8List hash(content, {String algo = 'sha256'}) {
if (!(content is Uint8List) && !(content is String)) {
throw "'content' must be a string or Uint8List";
}
if (content is String) {
if (isHex(content)) {
content = hexToUint8List(content);
} else {
content = Uint8List.fromList(utf8.encode(content));
}
}
switch (algo) {
case 'sha256':
final Digest sha256 = Digest('SHA-256');
return concatUint8List([
Uint8List.fromList([0]),
sha256.process(content)
]);
case 'sha512':
final Digest sha512 = Digest('SHA-512');
return concatUint8List([
Uint8List.fromList([1]),
sha512.process(content)
]);
case 'sha3-256':
final Digest sha3_256 = Digest('SHA3-256');
return concatUint8List([
Uint8List.fromList([2]),
sha3_256.process(content)
]);
case 'sha3-512':
final Digest sha3_512 = Digest('SHA3-512');
return concatUint8List([
Uint8List.fromList([3]),
sha3_512.process(content)
]);
case 'blake2b':
final Digest blake2b = Digest('Blake2b');
return concatUint8List([
Uint8List.fromList([4]),
blake2b.process(content)
]);
default:
throw 'Hash algorithm not supported';
}
}