代码之家  ›  专栏  ›  技术社区  ›  Lee D

如何预先确定加密操作中生成的密码文本的长度?

  •  2
  • Lee D  · 技术社区  · 16 年前

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

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

    我想做的是预先知道对于给定的输入,加密字符串将有多长时间,这样我就可以相应地限制输入相对于其加密形式可用的存储空间的长度(如果这有意义的话!).

    谢谢

    2 回复  |  直到 15 年前
        1
  •  6
  •   Alex Martelli    16 年前

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

    因此,如果您有一个70字节的输入,加密步骤将产生80字节的输出(16的最接近倍数为70),base64将把它转换为108(81/3乘以4)。

        2
  •  1
  •   Remus Rusanu    16 年前

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