aesEncrypt function
Uint8List
aesEncrypt(
- dynamic data,
- dynamic key
)
Implementation
Uint8List aesEncrypt(data, key) {
if (!(data is Uint8List) && !(data is String)) {
throw "'data' must be a string or Uint8List";
}
if (!(key is Uint8List) && !(key is String)) {
throw "'key' must be a string or Uint8List";
}
if (data is String) {
if (isHex(data)) {
data = hexToUint8List(data);
} else {
data = Uint8List.fromList(utf8.encode(data));
}
}
if (key is String) {
if (isHex(key)) {
key = hexToUint8List(key);
} else {
throw "'key' must be an hexadecimal string";
}
}
Uint8List aad = Uint8List.fromList(
List<int>.generate(16, (i) => Random.secure().nextInt(256)));
Uint8List iv = Uint8List.fromList(
List<int>.generate(12, (i) => Random.secure().nextInt(256)));
var encrypter = GCMBlockCipher(AESFastEngine());
var params = AEADParameters(KeyParameter(key), 16 * 8, iv, aad);
encrypter.init(true, params);
var cipherText = encrypter.process(data);
Uint8List result = concatUint8List([
encrypter.nonce,
encrypter.aad!,
Uint8List.fromList(cipherText.sublist(0, 5))
]);
return result;
}