aesEncrypt function

Future<EncryptionResult> aesEncrypt(
  1. String jsonString,
  2. String keyString
)

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));
}