我有一个应用程序,它以加密状态存储一些信息,包括文件和数据库。如何根据纯文本输入计算得到的密文长度是多少?
加密操作包括使用 .NET RijndaelManaged 类/算法,然后在存储之前转换为 Base64 字符串。
我想要做的是事先知道给定输入的加密字符串的长度,以便我可以根据其加密形式可用的存储空间相应地限制输入的长度(如果这是有道理的!)。
谢谢
最佳答案
Rijndael 的输出与输入的大小相同,向上舍入到 block 大小的下一个最接近的倍数(通常为 128 位,也称为 16 字节)。 Base64 将其输入扩展为输出 4/3——它需要 4 个字节的输出来表示每 3 个字节的输入。
因此,如果您有 70 字节的输入,加密步骤将产生 80 字节的输出(16 的最接近倍数 > 70),Base64 会将其转换为 108(81/3 乘以 4)。
关于security - 如何预先确定加密操作中生成的密文的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/990958/