4

我正在研究加密以及编码如何影响密钥和初始化向量的生成。

我正在TripleDESCryptoServiceProvider使用 ASCII 编码需要 24 字节密钥和 8 字节初始化向量。如果我决定使用不同的编码,这将如何影响密钥和初始化向量的生成?

我应该使用哪种编码来代替 UTF8/16/32?

谢谢

4

2 回答 2

2

加密参数与您选择的编码完全无关。加密参数总是以字节为单位定义的。编码涉及将字符转换为字节并将字节转换回字符。它们“冲突”的唯一地方是使用密码生成加密密钥。您应该使用专门为此设计的类,例如Rfc2898DeriveBytes

大多数时候,我看到程序员使用 ASCII 编码会更好地使用 UTF8 编码。UTF8 编码对 ASCII 字符的编码和解码方式与 ASCII 编码完全相同,但它还能正确有效地对 Unicode 的所有其余部分进行编码。如果您需要在遇到非 ASCII 字符时生成异常,请使用 ASCII 编码。

于 2010-07-09T12:02:22.493 回答
0

我不是专家,但是 TripleDES 不再被认为足够安全。Microsoft 的建议是使用 AES 256 位及以上。我认为文本编码不会影响加密强度,只会影响“纯文本”密钥和 IV 的长度。

于 2010-07-09T12:12:15.597 回答