首页 > 解决方案 > 如何在 dart 中使用具有 CBC 模式和 PCS5Padding 状态的 AES 加密数据?

问题描述

我需要用 AES 和 CBC 模式加密一些数据,dart 中的 PCS5Padding 状态。我进行了搜索,但在pub.dev中没有找到任何具有 PCS5Padding 状态的包。我尝试了下面的代码,但在这里使用 PCS7Padding 而不是 PCS5Padding 使用加密包进行加密。

  List plainTranData = [JSON data];
  final iv = IV.fromUtf8(vector value);
  final key = Key.fromUtf8(key);
  final encrypter = Encrypter(AES(key, mode: AESMode.cbc));
  final encrypted =  encrypter.encrypt(plainTranData.toString(), iv: iv);
  print(encrypted.base16);  // <-- encrypted data in Hex/base16

标签: flutterdartencryption

解决方案


正如 Richard Heap 在评论中指出的那样,它们之间没有实际区别。PKCS5 实际上只是 PKCS7 的一个特例。在许多情况下,自称为“PKCS5”的实现实际上实现了 PKCS7。(这不应该被理解为这里的“5”和“7”是版本号。它们不是。它们指的是特定的公钥加密标准文档。两个有些不相关的文档包含相同的基本填充策略。有没有专门针对这种填充策略的文档。)

有关这方面的更多详细信息,请参阅crypto.se 上的 PKCS#5 填充和 PKCS#7 填充之间的区别。


推荐阅读