我正在使用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 ...
请指导我摆脱这个问题?
答案 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个字符。