在.NET 4.0中使用ASCIIEncoding传递给编码的密钥长度是否有任何限制?

时间:2011-12-12 08:10:10

标签: c# .net .net-4.0

我正在使用C#4.0 Windows Application。我想使用System.Text.ASCIIEncoding.So提供加密密钥来保护我的文件。这里我的加密密钥是SARAVANAN,密钥长度为9。

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

它引发了异常,例如“指定的密钥不是这个算法的有效大小”。但它仅在8的长度上运行良好。所以,我想知道这个长度是否有任何限制因为这个ASCII ENCODING ...

请指导我摆脱这个问题?

3 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:6)

它与ASCIIEncoding无关。这与DESCryptoServiceProvider有关。来自the documentation

  

此算法支持64位密钥长度。

换句话说,传入的密钥应为64位或8字节。 这8个字节是由你决定的 - 但是9-ASCII字母字符串的ASCII编码形式将是9个字节(72位)。

答案 2 :(得分:1)

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