flutter - 如何在 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
解决方案
正如 Richard Heap 在评论中指出的那样,它们之间没有实际区别。PKCS5 实际上只是 PKCS7 的一个特例。在许多情况下,自称为“PKCS5”的实现实际上实现了 PKCS7。(这不应该被理解为这里的“5”和“7”是版本号。它们不是。它们指的是特定的公钥加密标准文档。两个有些不相关的文档包含相同的基本填充策略。有没有专门针对这种填充策略的文档。)
有关这方面的更多详细信息,请参阅crypto.se 上的 PKCS#5 填充和 PKCS#7 填充之间的区别。
推荐阅读
- html - 在移动视图中 - 在容器和桌面视图中带有填充的图片不会发生
- mysql - 有没有办法通过 mysqldump 命令使用数据库 url?
- sql - 无法创建视图,但其他语句运行正常。每个视图或函数中的列名必须是唯一的
- arraylist - 为什么我的 arraylist 大小在适配器页面上等于 0?
- git - 通过詹金斯错误向 github 进行身份验证
- regex - 跟踪 Ruby 正则表达式中的分隔符更改
- c# - 带有 EmguCV 的 CUDA 中的 SEHException
- python - Flask - 服务器端的定期检查
- cas - CAS 6.2.x MFA 主体属性触发器“memberOf”Active Directory 不工作
- java - 给定一个字符串列表,是否可以在一行中获得从每个长度到具有该长度的字符串集的映射,按长度排序?