我正在开发加密/解密文件的软件。
我希望能够猜测加密后数据的长度,但我无法使用 CryptoStream.Length (它会抛出 NotSupportedException)。
有什么办法可以猜出来吗?
我正在使用 RijndaelManaged (.Net Framework 4.0)
这比我能说的要好得多http://www.obviex.com/Articles/CiphertextSize.aspx http://www.obviex.com/Articles/CiphertextSize.aspx
从那里:
在最一般的情况下,密文的大小可以计算为:
密文=明文+块-(明文MOD块)
其中CipherText、PlainText、Block分别表示密文、明文、加密块的大小。基本上,生成的密文大小是根据扩展到下一个块的明文大小来计算的。如果使用填充并且明文的大小是块大小的精确倍数,则将添加一个包含填充信息的额外块。
假设您想要使用 Rijndael 加密算法、128 位(16 字节)块大小和 PKCS #7 填充来加密 9 位社会安全号 (SSN)。 (出于说明目的,假设在加密之前从 SSN 值中删除了破折号,以便“123-45-6789”变为“123456789”,并且该值被视为字符串,而不是数字。)如果SSN中的数字定义为ASCII字符,则密文的大小可以计算为:
密文 = 9 + 16 - (9 MOD 16) = 9 + 16 - 9 = 16(字节)
请注意,如果明文值的大小恰好是块大小的倍数,则包含填充信息的额外块将被附加到密文中。例如,如果您要加密 16 位信用卡号(定义为 16 个字符的 ASCII 字符串),则密文的大小将为:
密文 = 16 + 16 - (16 MOD 16) = 16 + 16 - 0 = 32(字节)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)