我使用的是Saravanan4.0Windows应用程序。我想使用System.Text.ASCIIEncoding.So提供加密密钥来保护我的文件,这里我的加密密钥是C#,密钥长度是9。
String enKey="SARAVANAN";
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = ASCIIEncoding.ASCII.GetBytes(enKey);它引发了类似“指定的密钥不是此算法的有效大小”的异常.But它在8 only.So的长度下工作良好,我想知道由于这种ASCII码对此长度是否有任何限制...
请引导我走出这个问题?
发布于 2011-12-12 16:16:40
64位是DES加密算法的唯一有效密钥大小。
ASCII编码每个字符使用8位,因此8个ASCII字符== 64位。
发布于 2011-12-12 16:15:58
这和ASCIIEncoding没有任何关系。这跟DESCryptoServiceProvider有关。来自the documentation
此算法支持64位的密钥长度。
换句话说,您传递的密钥应该是64位或8字节。如何获得这8个字节取决于你--但是9个ASCII字母组成的字符串的ASCII编码形式将是9个字节(72位)。
发布于 2011-12-12 16:16:53
如果你看一下MSDN,你可以看到This algorithm supports a key length of 64 bits。因此,密钥的唯一有效长度是8个字符。
https://stackoverflow.com/questions/8471449
复制相似问题