#region AES加密
/// <summary>
/// AES 加密
/// </summary>
/// <param name=”str”>明文(待加密)</param>
/// <param name=”key”>密文</param>
/// <returns></returns>
public string Encrypt(string paymentCode)
{
string key = “@>)4]8%a”;
SymmetricAlgorithm symmetric;
ICryptoTransform iCrypto;
MemoryStream memory;
CryptoStream crypto;
byte[] byt;
//八位的key还是用DESCryptoServiceProvider 而非TripleDESCryptoServiceProvider
symmetric = new DESCryptoServiceProvider();
symmetric.Mode = CipherMode.ECB;//模式
symmetric.Padding = PaddingMode.PKCS7;//填充
symmetric.Key = Encoding.UTF8.GetBytes(key);
//mCSP.IV = Encoding.UTF8.GetBytes(iv); ECB模式不需要iv
iCrypto = symmetric.CreateEncryptor();
byt = Encoding.UTF8.GetBytes(paymentCode);
memory = new MemoryStream();
crypto = new CryptoStream(memory, iCrypto, CryptoStreamMode.Write);
crypto.Write(byt, 0, byt.Length);
crypto.FlushFinalBlock();
crypto.Close();
return Convert.ToBase64String(memory.ToArray());
}
/// <summary>
/// AES 解密
/// </summary>
/// <param name=”str”>明文(待解密)</param>
/// <param name=”key”>密文</param>
/// <returns></returns>
public static string Decrypt(string str)
{
string key = “@>)4]8%a”;
SymmetricAlgorithm mCSP = new DESCryptoServiceProvider();
mCSP.Mode = CipherMode.ECB;
mCSP.Padding = PaddingMode.PKCS7;
mCSP.Key = Encoding.UTF8.GetBytes(key);
//mCSP.IV = Encoding.UTF8.GetBytes(iv);
ICryptoTransform iCrypto;
MemoryStream memory;
CryptoStream crypto;
byte[] byt;
iCrypto = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt = Convert.FromBase64String(str);
memory = new MemoryStream();
crypto = new CryptoStream(memory, iCrypto, CryptoStreamMode.Write);
crypto.Write(byt, 0, byt.Length);
crypto.FlushFinalBlock();
crypto.Close();
return Encoding.UTF8.GetString(memory.ToArray());
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text = Encrypt(textBox1.Text);
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text = Decrypt(textBox2.Text);
}