3

我们正在使用以下密码

AES/ECB/NOPADDING

但我有点困惑,因为像 ECB 这样的模式需要根据块大小来填充输入。但这里我们说 NOPADDING。它们看起来不矛盾。

我们是否可以拥有未填充为 ECB 模式输入的任意数据。

4

1 回答 1

4

ECB 加密的“原始”模式没有应用填充,例如 AES/ECB/NOPADDING,基本上是对 N 个数据块的加密功能的纯粹应用。它们对于需要实现默认情况下未提供的自定义模式的开发人员很有用。任何操作模式都是从原始加密函数构造的。

尽管如此,由于块密码只能对全长块进行操作,因此可能必须对最后一个块应用某种形式的填充。这留给开发人员,他们将实现为他们希望实现的模式指定/推荐的任何形式的填充。有很多可能性,这就是为什么我们有“NOPADDING”——让我们自己选择填充。

这些模式,XXX/ECB/NOPADDING,决不能直接使用。任何欧洲央行模式都不应该,真的。纯 ECB 加密非常不安全,例如它不会隐藏纯文本的统计属性(您可能知道“加密”图像仍然看起来很像原始图像的示例)。最重要的是,如前所述,块密码只能对全长块进行操作。这需要应用自定义填充方案,这将添加另一个可能出错的层,而不是简单地依赖某些默认实现。

于 2012-05-10T10:28:18.843 回答