是否有任何限制我的密钥长度传递到编码使用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编码,这个长度是否有任何限制…
请引导我走出这个问题?
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个字符。