C#中使用TripleDESCryptoServiceProvider類
//C#中使用TripleDESCryptoServicePr
using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Security.Cryptography;
namespace ImageAnimatorExample
{
#region 3DES加密
public static string Encrypt3DES(string a_strString, string a_strKey, string a_strIV)
{
System.Security.Cryptography.TripleDESCryptoServiceProvider des = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
byte[] inputByteArray = System.Text.Encoding.UTF8.GetBytes(a_strString);
des.Key = System.Text.Encoding.UTF8.GetBytes(a_strKey);
des.IV = System.Text.Encoding.UTF8.GetBytes(a_strIV);
des.Mode = System.Security.Cryptography.CipherMode.CBC;
des.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write);
System.IO.StreamWriter swEncrypt = new System.IO.StreamWriter(cs);
swEncrypt.WriteLine(a_strString);
swEncrypt.Close();
//把內存流轉換成字節數組,內存流現在已經是密文了
byte[] bytesCipher = ms.ToArray();
//內存流關閉
string base64String= System.Convert.ToBase64String(bytesCipher);
//string by = "";
//foreach (byte b in bytesCipher)
//{
// by += b.ToString() + " ";
//}
//SbeLogger.info("【3DESBytes】" + by);
//byte[] FromBase64String = Convert.FromBase64String(base64String);
//ms = new MemoryStream(FromBase64String);
//cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
//StreamReader sr = new StreamReader(cs);
////輸出解密後的內容
//string DecryptString = sr.ReadLine();
//加密流關閉
cs.Close();
des.Clear();
ms.Close();
return base64String;
}
public static string Decrypt3DES(string a_strString, string a_strKey, string a_strIV)
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
byte[] inputByteArray = Encoding.UTF8.GetBytes(a_strString);
des.Key = System.Text.Encoding.UTF8.GetBytes(a_strKey);
des.IV = System.Text.Encoding.UTF8.GetBytes(a_strIV);
des.Mode = CipherMode.CBC;
des.Padding = PaddingMode.PKCS7;
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
byte[] FromBase64String = Convert.FromBase64String(a_strString);
ms = new MemoryStream(FromBase64String);
cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
//輸出解密後的內容
string DecryptString = sr.ReadLine();
//加密流關閉
cs.Close();
des.Clear();
ms.Close();
sr.Close();
return DecryptString;
}
#endregion
}