2

我有一个应用程序,它将一些信息以加密状态存储在文件和数据库中。如何根据纯文本输入计算得到的密文长度?

加密操作包括使用 .NET RijndaelManaged 类/算法,然后在存储之前转换为 Base64 字符串。

我想要做的是事先知道加密字符串对于给定输入的长度,以便我可以根据可用于其加密形式的存储空间相应地限制输入的长度(如果这有意义的话!)。

谢谢

4

2 回答 2

6

Rijndael 的输出与输入大小相同,四舍五入到块大小的下一个最接近的倍数(通常为 128 位,即 16 字节)。Base64 将其输入扩展到其输出的 4/3——它需要 4 个字节的输出来表示每 3 个字节的输入。

因此,例如,如果您有 70 字节的输入,则加密步骤将产生 80 字节的输出(16 的最接近倍数 > 70),Base64 会将其转换为 108(81/3 乘以 4)。

于 2009-06-13T16:24:53.573 回答
1

加密的文本将是第一个比您的文本大的密码块大小。您检查您的算法BlockSize属性。纯 Base64 编码将输出增加三分之一,但如果您还需要 URL 转义(百分比编码)某些 Base64 符号(如“+”和“/”),这可能会有所不同。

于 2009-06-13T16:30:00.783 回答