我有一个应用程序,它将一些信息以加密状态存储在文件和数据库中。如何根据纯文本输入计算得到的密文的长度?
加密操作包括使用.NET RijndaelManaged类/算法,然后在存储之前转换为Base64字符串。
我希望能够做的是事先知道加密字符串对于给定输入的长度,以便我可以相应于其加密表单可用的存储空间相应地限制输入的长度(如果这很有意义!)。
由于
答案 0 :(得分:6)
Rijndael的输出与输入的大小相同,向上舍入到块大小的下一个最接近的倍数(通常为128位,也就是16个字节)。 Base64将其输入扩展到其输出4/3 - 它需要4个字节的输出来表示每个3字节的输入。
因此,如果你有一个70字节的输入,加密步骤将产生80字节的输出(16的最接近的倍数,即> 70),Base64将其转换为108(81/3乘以4)。 / p>
答案 1 :(得分:1)
加密文本将是第一个比文本更大的密码块大小。您检查算法BlockSize属性。纯Base64编码将输出增加了三分之一,但如果你还需要URL转义(百分比编码)某些Base64符号(如'+'和'/'),这可能会有所不同。