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

标签 security cryptography rijndaelmanaged

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

加密操作包括使用 .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/

相关文章:

android - SSRS 网页的 Monodroid WebView 身份验证

c# - 需要考虑的应用安全问题

c# - 如何在C#中将字符串转换为byte[]

random - Go - 关于 crypto/rand 的例子

c# - 如何在aes加密和解密算法中使用随机salt和随机iv?

docker - 从 docker 看不到本地蚊子

c# - 数字签名如何保证消息已由 'Alice' 发送

math - 计算加密数据的最大大小

.net - RijndaelManaged "Padding is invalid and cannot be removed"仅在生产中解密时发生

c# - 比较 C# 和 ColdFusion 之间的密码哈希 (CFMX_COMPAT)