读书人

指定键的大小对于此算法无效。该怎么解

发布时间: 2013-12-04 17:21:01 作者: rapoo

指定键的大小对于此算法无效。
关于DES解密,先贴出代码:


///?<summary>????
///?解密数据????
///?</summary>??
///?<param?name="Text"></param>????
///?<param?name="sKey"></param>????
///?<returns></returns>??
public string DecryptString(string Text, string sKey,string sIV)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = System.Security.Cryptography.CipherMode.CBC;
des.Padding = PaddingMode.Zeros;
int len;

len = Text.Length / 2;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = 0; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
inputByteArray[x] = (byte)i;
}
byte[] kkey = ASCIIEncoding.UTF8.GetBytes(sKey);
byte[] iiv = ASCIIEncoding.UTF8.GetBytes(sIV;
des.Key = kkey;//+++这里报错 指定键的大小对于此算法无效。+++
des.IV = iiv;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}

网上google了一下,说是传的key的位数不正确,所以按着这个思路调试发现当前这个加密方式要求的key位数为8位,但是我传的key位数为16位,所以报错了。
但是这个key是合作方给我的,他们用此key进行加密,然后传给我,我肯定是要按照他给的key再进行解密,所以小弟不明白这里我改怎么去转换key呢?
[解决办法]
引用:
哦?没人来回答啊?我问题已经解决了,有人来接分吗?


解决就好!

读书人网 >asp.net

热点推荐