日期:2014-05-18  浏览次数:20435 次

如何知道加密的算法类型?
如果我知道明文和加密后的字符串,可以看出是采用哪种加密算法的吗?不同的加密算法,有没有特征?

明文 密文 
1 5WT+hyOUEGvTy84cX9kNxQ== 
2 lQHQVXte3y5zkuWvoQPdCQ== 
3 iZk8mQu0PtPj6dFx3+0rgQ== 
4 JEqPNnmy0ZRimwV99xUjTQ== 
5 sirvWuUxVR7OLi4dE9eSdw== 
6 nZYEhsuc35Zd0y1/VV657w== 
A k5aEQxTap1UxhGncbEfcag== 
a gSf9YyuRwkUI4/LD9EiZaA== 


------解决方案--------------------
public string DesDecrypt(string strText) //解密
{
byte[] bykey = null;
byte[] IV ={ 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
byte[] inputByteArray = new Byte[strText.Length];
try
{
//将密钥转换为UTF8编码的字符数组;
bykey = System.Text.Encoding.UTF8.GetBytes("xiaojiji".Substring(0, 8));
//建立对象;
System.Security.Cryptography.DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//将以64为基的数字组成的值的System.string表示形式转换成为8位无符号整数数组;
inputByteArray = Convert.FromBase64String(strText);
//创建存储区为内存的流;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
//以写模式把数据流和加密的数据流建立连接;
System.Security.Cryptography.CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(bykey, IV), System.Security.Cryptography.CryptoStreamMode.Write);
//把数据加密写到转换流中
cs.Write(inputByteArray, 0, inputByteArray.Length);
//把加密过的数据流写到存储区为内存的数据流中,以清空缓冲区
cs.FlushFinalBlock();
//定义字符集编码对象;
System.Text.Encoding encoding = new System.Text.UTF8Encoding();
//字节数组的值转换为等效的System.string 表现形式;
return encoding.GetString(ms.ToArray());
}
catch (Exception error)
{
return "error" + error.Message;
}
}