111,126
社区成员
发帖
与我相关
我的任务
分享
//C#中DES的加密算法的使用
//导入命名空间
using System.Security;
using System.Security.Cryptography;
//声明全局变量保存密钥和向量
public string Key;
public string Iv;
//定义DESCryptoServiceProvider对象
public DESCryptoServiceProvider DES;
/// <summary>
/// 加密事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.textBox1.Text))
{
DES = new DESCryptoServiceProvider();//实例化
DES.GenerateKey();//生成用于该算法的随即密钥
DES.GenerateIV();//生成用于该算法的随机向量
//此处存储密钥和向量
this.Key = Convert.ToBase64String(DES.Key);
this.Iv = Convert.ToBase64String(DES.IV);
//密钥和向量输出到界面
this.textBox2.Text = Convert.ToBase64String(DES.Key);
this.textBox3.Text = Convert.ToBase64String(DES.IV);
//格式化明文转化为byte数组,格式化不一定这样些但是加密和解密要一致
byte[] data = UnicodeEncoding.Unicode.GetBytes(this.textBox1.Text);
//加密
byte[] EncData = DES.CreateEncryptor().TransformFinalBlock(data, 0, data.Length);
//输出密文到界面
this.textBox4.Text = Convert.ToBase64String(EncData);
}
else
{
MessageBox.Show("没有需要加密的明文!");
}
}
/// <summary>
/// 解密事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
if (this.Key ==this.textBox2.Text && this.Iv == this.textBox3.Text)
{
DES=new DESCryptoServiceProvider();
//与TripleDES(3DES)不同此处需要密钥和向量
DES.Key =Convert.FromBase64String(this.Key);
DES.IV = Convert.FromBase64String(this.Iv);
byte[] data = Convert.FromBase64String(this.textBox4.Text);
byte[] DecData = DES.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);
this.textBox5.Text = UnicodeEncoding.Unicode.GetString(DecData);
}
else
{
MessageBox.Show("密钥发生改变无法解密!");
}
}