您是否可以使用AES指定加密字符串的输出长度?

问题描述 投票:0回答:1

我遇到加密问题,正在寻找一些指导。

我正在使用AES加密(Rijndael)加密和解密用户密码,安全问题答案和PIN码。然后将这些加密的值放入数据库中,这些字段定义为bin(16),bin(32)和bin(64)。最初,我使用自定义填充来确保数据的长度,但是出于安全原因,我打算使用PKCS7填充。不幸的是,至少对于密码和安全性问题,此更改使加密字符串的长度不可预测。例如,加密时有效密码的长度可以为16或32字节,而加密时安全答案的长度可以为16、32或64字节。我知道块的大小以及它是如何工作的,但是即使使用32字节的块大小(可用的最大块大小),我仍然无法控制安全性答案的长度(可能为32或64字节)。

是否有一种方法可以在不增加输入限制的情况下仍将我的加密字符串强制为特定长度,同时仍使用AES和PCKS7填充?

encryption aes rijndael
1个回答
0
投票

您本质上是在要求Pigeonhole Principle消失(不会)。

[我知道您说的是您理解块的大小,但是您似乎并不基于该声明后面的句子。块大小定义了传入和传出算法的位串的长度。这就对了。如果传入2.5批256位(最多填充3个块),那么您将获得3个输出块。同样,具有256位块大小的AES不再是AES,而是Rijndael。

您可以predict使用PKCS7填充的AES下给定输入的输出大小,但不能将其限制为32字节。

如果您不对这些字段进行加密,那么您仍然需要在数据库中设置最大字段大小-加密它们的事实不会改变这一点。

© www.soinside.com 2019 - 2024. All rights reserved.