aesEncrypt function
Implementation
Future<EncryptionResult> aesEncrypt(String jsonString, String keyString) async {
final keyBytes = utf8.encode(keyString);
if (keyBytes.length != 32) {
throw ArgumentError("Key must be 32 bytes (256 bits) long");
}
final key = encrypt.Key(Uint8List.fromList(keyBytes));
final ivBytes = List<int>.generate(16, (_) => Random.secure().nextInt(256));
final iv = encrypt.IV(Uint8List.fromList(ivBytes));
final encrypter = encrypt.Encrypter(encrypt.AES(
key,
mode: encrypt.AESMode.cbc,
padding: 'PKCS7',
));
final encrypted = encrypter.encrypt(jsonString, iv: iv);
return EncryptionResult(encrypted.base64, base64Encode(iv.bytes));
}