3des加密为何编译出错?
叶子哟 2004-06-22 11:51:03 //利用3des加密源串,密钥为8位
//web应用
const string b64key = "abcdefgh";
public string EncryptData(string b64Key, string content)
{
byte[] tdesIV=new byte[1];
byte[] tdesKey=Convert.FromBase64String(b64Key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Mode=CipherMode.ECB;
tdes.Padding=PaddingMode.PKCS7;
ICryptoTransform temp=tdes.CreateEncryptor(tdesKey, tdesIV);
ToBase64Transform t64=new ToBase64Transform();
MemoryStream dstream=new MemoryStream();
CryptoStream encStream = new CryptoStream(dstream,t64 , CryptoStreamMode.Write);
CryptoStream enc2=new CryptoStream(dstream,temp,CryptoStreamMode.Write);
Console.WriteLine("Encrypting...");
char[] contentchar=content.ToCharArray();
byte[] contentbyte=new byte[contentchar.GetLength(0)];
for (int i=0;i<contentchar.GetLength(0);i++)
{
contentbyte[i]=(byte)contentchar[i];
}
enc2.Write(contentbyte, 0, contentchar.GetLength(0));
enc2.Close();
byte[] a3= dstream.ToArray();
string a4=Convert.ToBase64String(a3);
return a4;
}
出错提示:
指定键的大小对于此算法无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Security.Cryptography.CryptographicException: 指定键的大小对于此算法无效。
源错误:
行 66: tdes.Mode=CipherMode.ECB;
行 67: tdes.Padding=PaddingMode.PKCS7;
行 68: ICryptoTransform temp=tdes.CreateEncryptor(tdesKey, tdesIV);
行 69: ToBase64Transform t64=new ToBase64Transform();
行 70: MemoryStream dstream=new MemoryStream();
源文件: d:\inetpub\wwwroot\websip\bjsgip.aspx.cs 行: 68