gpt4 book ai didi

algorithm - 两种不同的 Aes 实现有不同的密文吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:40 25 4
gpt4 key购买 nike

我正在使用库 1 Aes 算法实现,现在我想将它更改为库 2 的另一个实现,它工作正常但问题是它给我 diff 加密数据形式库 1,是否可以使用 ECB 模式实现 Aes 128 位,具有相同的 key 和纯文本,但对于 2 种不同的实现,仅密文(加密数据)不同?

我发现另一件事是,如果我传递小于 16 字节的输入字节,那么两个库的加密数据都会匹配,但是在库 1 中,解密是完美的,但在库 2 中,它显示的加密和解密是相同的(不完全解密为原始文本)会出现什么问题?

最佳答案

鉴于您的评论,即小于 16 字节的字符串导致相同的输出,以及您对 ECB 的使用(您永远不应该使用),我怀疑您的一个库实际上没有使用 ECB,而是默认为CBC(这是一个更好的默认设置)并且您正在将 NULL IV 传递给 CBC。如果我的理论是正确的,那么您应该期望前 16 个字节始终相同,并且在该点之后开始出现差异。

对此的最佳解决方案是将所有代码从 ECB(除了一些非常罕见的情况外,它在所有情况下都严重损坏)转换为 CBC 或您可以找到的任何其他模式。 CBC 是最常见的,您需要将随机生成的 IV 传递给它。

如果无法切换模式,我会调查您的第二个库并确定如何将其设置为 ECB 模式,它目前可能未处于该模式。应该警告依赖您的加密的任何人,使用 ECB 模式会泄露关于明文。有时它几乎没有加密。查看entry at Wikipedia一个很好的视觉示例,说明它到底有多糟糕。这不是一些理论上的攻击。它真的、真的坏了。

关于algorithm - 两种不同的 Aes 实现有不同的密文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12969554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com