TripleDes算法加密解密总结:
public static TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
/// <summary>
/// TripleDES加密字符串
/// </summary>
/// <param name="encryptString">待加密的字符串</param>
/// <param name="encryptKey">加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public static byte[] Encode(string encryptString, byte[] Key, byte[] IV)
{
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key,IV), CryptoStreamMode.Write);
byte[] toEntry = Encoding.Unicode.GetBytes(encryptString);
try
{
cStream.Write(toEntry, 0, toEntry.Length);
cStream.FlushFinalBlock();
byte[] encryptedBytes = mStream.ToArray();
//Encoding.Unicode.GetString(encryptedBytes,0,encryptedBytes.Length);
return encryptedBytes;
}
catch (CryptographicException err)
{
throw new Exception("加密出错:" + err.Message);
}
finally
{
cStream.Close();
mStream.Close();
}
}
/// <summary>
/// TripleDES解密字符串
/// </summary>
/// <param name="decryptString">待解密的字符串</param>
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public static string Decode(byte[] EncryData, byte[] Key, byte[] IV)
{
MemoryStream mStream = new MemoryStream(EncryData);
CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), CryptoStreamMode.Read);
byte[] DescryptBytes = new byte[EncryData.Length];
try
{
cStream.Read(DescryptBytes, 0, DescryptBytes.Length);
string DescryptString = Encoding.Unicode.GetString(DescryptBytes, 0, DescryptBytes.Length);
return DescryptString;
}
catch (CryptographicException err)
{
throw new Exception("解密出错:" + err.Message);
}
finally
{
cStream.Close();
mStream.Close();
}
}