三重DES结果长度

时间:2015-01-23 11:23:03

标签: encryption encryption-symmetric

如果我加密电子邮件以便将其存储在数据库中,则生成的字符串比电子邮件本身长。此结果编码字符串是否有最大长度?如果是这样,它是否取决于密钥长度和电子邮件长度?我需要知道这一点,所以我可以将我的数据库字段设置为正确的长度。 感谢。

1 个答案:

答案 0 :(得分:2)

正如Alex K.所说,对于分组密码(如DES),常见模式会将它们填充到块大小的倍数。 3DES的块大小为64位(8字节)。最常见的填充方案是PKCS7,它用" n×n字节填充块。"这就是说,如果你需要一个字节的填充,它填充0x01。如果需要四个字节的填充,则填充0x04040404(4x 4s)。如果您的数据已经是正确的长度,它将填充一个完整的块(3DES的8字节0x08)。

简短版本是3DES的填充密文长度可以比​​明文长8个字节。如果您的加密方案是典型的,不安全的实现,则这是长度。您使用3DES(一种过时的密码)的事实使得它更可能不安全地实施,因此这就是答案。

但是如果您的方案实施得很好,那么该消息可能会附加很多其他内容。可能有8个字节的初始化向量。如果您使用密码,可能会有任意长度的盐。可能有一个HMAC。可能有很多东西可以添加任意数量的空间。 (例如,RNCryptor格式最多可为消息添加82个字节。)因此,您需要了解格式的实现方式。