定义加密使用的类 des
//定义开始
public class DES
{
public DES()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//默认密钥向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
//密钥
public string KeyValue = "20091221";
/// DES加密
/// <param >待加密的字符串</param>
/// <param >加密密钥,要求为8位</param>
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
public string EncryptDES(string encryptString, string encryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
catch
{
//return encryptString;
return "Encrypt Failed!";
}
}
/// DES解密
/// <param >待解密的字符串</param>
/// <param >解密密钥,要求为8位,和加密密钥相同</param>
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
public string DecryptDES(string decryptString, string decryptKey)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
//return decryptString;
return "Decrypt Failed!";
}
}
}
//定义结束
在页面C_DES.cs中使用,页面中有控件
textBox1,//输入要加密的源串
textBox2,//显示加密后的串
textBox3,//显示解密后的串
button1 //加密按钮
button2 //解密按钮
代码
//代码开始
public partial class C_DES : Form
{
DES mydes = new DES();
string strIn = string.Empty;
string strInEncrypt = string.Empty;
string strOut = string.Empty;
string strOutDecrypt = string.Empty;
Encoding ed = Encoding.UTF8;
byte[] bt = null;
public C_DES()
{
InitializeComponent();
}
//按下加密时执行
private void button1_Click(object sender, EventArgs e)
{
strIn = this.textBox1.Text.Trim();
strInEncrypt = mydes.EncryptDES(strIn, mydes.KeyValue);
bt = ed.GetBytes(strInEncrypt);
strOut = Convert.ToBase64String(bt);
this.textBox2.Text = strOut;
}
//按下解密时执行
private void button2_Click(object sender, EventArgs e)
{
strOutDecrypt = this.textBox2.Text.Trim();
bt = Convert.FromBase64String(strOutDecrypt);
strOut = ed.GetString(bt);
strIn = mydes.DecryptDES(strOut, mydes.KeyValue);
this.textBox3.Text = strIn;
}
}
//代码结束