DES的加密解密
DES加密算法是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。
在VS中的使用非常的简单,首先引用两个命名空间,然后,需要的设置两个参数,一个是key值秘钥,一个是iv向量。
引用命名空间
usingSystem.IO;
usingSystem.Security.Cryptography;
加密解密函数
<span style="font-size:24px;">//加密函数
public static string Encrypt(string sourceString, string key, string iv)
{
try
{
byte[] btKey = Encoding.UTF8.GetBytes(key);
byte[] btIV = Encoding.UTF8.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
byte[] inData = Encoding.UTF8.GetBytes(sourceString);
try
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return sourceString;
}
}
}
catch { }
return "DES加密出错";
}
//解密函数
public static string Decrypt(string encryptedString, string key, string iv)
{
byte[] btKey = Encoding.UTF8.GetBytes(key);
byte[] btIV = Encoding.UTF8.GetBytes(iv);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
byte[] inData = Convert.FromBase64String(encryptedString);
try
{
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Encoding.UTF8.GetString(ms.ToArray());
}
catch
{
return encryptedString;
}
}
}</span>
添加两个控件,进行调用加密解密函数,一句话即可。
<span style="font-size:24px;">private void button1_Click(object sender, EventArgs e)
{
string jiamiqian = textBox1.Text;
textBox2.Text = Encrypt(jiamiqian, "12345678", "abcdefgh");
}
private void button2_Click(object sender, EventArgs e)
{
string jiemiqian = textBox1.Text;
textBox2.Text = Decrypt(jiemiqian, "12345678", "abcdefgh");
}
</span>