是否有任何限制我的密钥长度传递到编码使用ASCIIEncoding在.net 4.0

本文关键字:ASCIIEncoding net 编码 任何限 我的 密钥长度 是否 | 更新日期: 2023-09-27 18:17:37

我使用c# 4.0 Windows应用程序。我想给加密密钥,以保护我的文件使用System.Text.ASCIIEncoding。这里我的加密密钥是SARAVANAN密钥长度是9。

 String enKey="SARAVANAN";
 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 des.Key = ASCIIEncoding.ASCII.GetBytes(enKey);

会引发异常,如"指定的键不是此算法的有效大小"。但它只在长度为8时工作良好。所以,我想知道由于这个ASCII编码,这个长度是否有任何限制…

请引导我走出这个问题?

是否有任何限制我的密钥长度传递到编码使用ASCIIEncoding在.net 4.0

64位是DES加密算法唯一有效的密钥大小。

ASCII编码每个字符使用8位,因此8个ASCII字符== 64位

这与ASCIIEncoding无关。它和DESCryptoServiceProvider有关。来自文档:

该算法支持64位密钥长度

换句话说,您传入的密钥应该是64位,或8字节。如何获得这8个字节取决于您-但是9个ascii字母字符串的ascii编码形式将是9字节(72位)。

如果你看一下MSDN你可以看到This algorithm supports a key length of 64 bits。因此,唯一有效的密钥长度是8个字符。