【发布时间】:2012-10-19 07:39:40
【问题描述】:
我正在使用库 1 Aes 算法实现,现在我想将其更改为库 2 的另一个实现,它工作正常,但问题是它给了我来自库 1 的差异加密数据,是否可以使用 ECB 模式实现 Aes 128 位,具有相同的密钥和纯文本,但仅在密文(加密数据)方面不同,用于 2 种不同的实现?
我发现另一件事是,如果我传递小于 16 字节的输入字节,那么两个库的加密数据就会匹配,但在 library1 中解密再次完美,但在 library2 中显示的加密和解密是相同的(不完全解密为原始文本)会有什么问题?
【问题讨论】:
-
他们在填充它吗?如果不是,并且它们使用相同的cipher mode 和相同的初始化向量,那么不,它们应该产生完全相同的输出。
-
这种差异的一个常见根本原因,至少从我们在 Stack Overflow 问题中看到的情况来看,是两种不同的情况使用不同的 文本编码。请记住,密码的输入是 bytes 而不是 text - 确保在比较它们时发送相同的 bytes。
-
我不知道他们是否正在填充它。如果他们正在填充呢?Blueraja 在这两种情况下我都使用 (unsigned char*) 作为密码的输入。
-
旁注:不要使用欧洲央行。使用经过身份验证的语义安全模式,例如 AES-GCM。
标签: algorithm cryptography aes