如何在没有IV的情况下使用ECB模式/AES 256在Flutter中加密/解密?

9udxz4iz  于 2023-04-13  发布在  Flutter
关注(0)|答案(2)|浏览(180)

我试图加密flutter/Dart中的字符串。我已经尝试了下面的代码,但看起来必须有IV。

final key = Key.fromBase64("Some_Key");
final iv = IV.fromBase64("Some_Key"); // I do not need IV for encryption/decryption

final encrypter = Encrypter(AES(key, mode: AESMode.ecb, padding: 'PKCS7'));
final encrypted = encrypter.encrypt(employeeNumber, iv: iv); //No IV needed

有人能告诉我如何加密和解密字符串使用AES 256位/ ECB模式/PKCS 7填充和没有IV。
请注意,我现在不需要静脉注射。请帮助…

mec1mxoz

mec1mxoz1#

我也想避免IV,然后我找到了下面的解决方案:将虚拟IV制作为

var ivBtyes = Uint8List.fromList([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
      final iv = encrypt.IV(ivBtyes);

设置AES模式为ECB和填充为“PKCS 7”.然后你的代码-

final encrypted = encrypter.encrypt(employeeNumber, iv: iv);

虽然你把IV作为虚拟值传递,但它在ECB模式下会被忽略。

bqujaahr

bqujaahr2#

对于那些仍然在寻找答案的人,如果你没有IV值,你可以使用

final iv = IV.fromLength(16);

下面是有效的代码

final iv = IV.fromLength(16);

  final enc = Encrypter(AES(Key(Uint8List.fromList(keyBytes)),
      mode: AESMode.ecb, padding: 'PKCS7'));
  final encrypted = enc.encrypt(plaintext, iv: iv);
  final base64String = base64.encode(encrypted.bytes);

相关问题