public class Encrypt
{ internal string ToEncrypt(string encryptKey, string str)
{
try
{
byte[] P_byte_key = //将密钥字符串转换为字节序列
Encoding.Unicode.GetBytes(encryptKey);
byte[] P_byte_data = //将字符串转换为字节序列
Encoding.Unicode.GetBytes(str);
MemoryStream P_Stream_MS = //创建内存流对象
new MemoryStream();
CryptoStream P_CryptStream_Stream = //创建加密流对象
new CryptoStream(P_Stream_MS, new DESCryptoServiceProvider().
CreateEncryptor(P_byte_key, P_byte_key), CryptoStreamMode.Write);
P_CryptStream_Stream.Write(//向加密流中写入字节序列
P_byte_data, , P_byte_data.Length);
P_CryptStream_Stream.FlushFinalBlock();//将数据压入基础流
byte[] P_bt_temp =//从内存流中获取字节序列
P_Stream_MS.ToArray();
P_CryptStream_Stream.Close();//关闭加密流
P_Stream_MS.Close();//关闭内存流
return //方法返回加密后的字符串
Convert.ToBase64String(P_bt_temp);
}
catch (CryptographicException ce)
{
throw new Exception(ce.Message);
}
} internal string ToDecrypt(string encryptKey, string str)
{
try
{
byte[] P_byte_key = //将密钥字符串转换为字节序列
Encoding.Unicode.GetBytes(encryptKey);
byte[] P_byte_data = //将加密后的字符串转换为字节序列
Convert.FromBase64String(str);
MemoryStream P_Stream_MS =//创建内存流对象并写入数据
new MemoryStream(P_byte_data);
CryptoStream P_CryptStream_Stream = //创建加密流对象
new CryptoStream(P_Stream_MS, new DESCryptoServiceProvider().
CreateDecryptor(P_byte_key, P_byte_key), CryptoStreamMode.Read);
byte[] P_bt_temp = new byte[];//创建字节序列对象
MemoryStream P_MemoryStream_temp =//创建内存流对象
new MemoryStream();
int i = ;//创建记数器
while ((i = P_CryptStream_Stream.Read(//使用while循环得到解密数据
P_bt_temp, , P_bt_temp.Length)) > )
{
P_MemoryStream_temp.Write(//将解密后的数据放入内存流
P_bt_temp, , i);
}
return //方法返回解密后的字符串
Encoding.Unicode.GetString(P_MemoryStream_temp.ToArray());
}
catch (CryptographicException ce)
{
throw new Exception(ce.Message);
}
}
}

调用

private void btn_Encrypt_Click(object sender, EventArgs e)
{
if (txt_password.Text.Length == )//判断加密密钥长度是否正确
{
try
{
txt_EncryptStr.Text = //调用实例ToEncrypt方法得到加密后的字符串
new Encrypt().ToEncrypt(
txt_password.Text, txt_str.Text);
//Encrypt P_Encrypt = new Encrypt();
//P_Encrypt.ToEncrypt(""
}
catch (Exception ex)//捕获异常
{
MessageBox.Show(ex.Message);//输出异常信息
}
}
else
{
MessageBox.Show("密钥长度不符!", "提示");//提示用户输入密钥长度不正确
}
}
private void btn_UnEncrypt_Click(object sender, EventArgs e)
{
if (txt_password2.Text.Length == )//判断加密密钥长度是否正确
{
try
{
txt_str2.Text = //调用ToDecrypt方法得到解密后的字符串
new Encrypt().ToDecrypt(
txt_password2.Text, txt_EncryptStr2.Text);
}
catch (Exception ex)//捕获异常
{
MessageBox.Show(ex.Message);//输出异常信息
}
}
else
{
MessageBox.Show("密钥长度不符!", "提示");//提示用户输入密钥长度不正确
}
}

转自

http://blog.csdn.net/finlay_liu/article/details/8272855

最新文章

  1. 4、ASP.NET MVC入门到精通——NHibernate构建一个ASP.NET MVC应用程序
  2. spring+ibatis+多数据源
  3. webservice basics
  4. Python内置方法的时间复杂度(转)
  5. win7和centos双系统安装
  6. Spring事务传播机制
  7. 函数fsp_alloc_free_page
  8. 收集的VS2013的使用小技巧( 不断总结中)
  9. JS复习:二十一章
  10. JavaScript 格式化时间
  11. JS是按值传递还是按引用传递?【转载】
  12. BZOJ_2595_[Wc2008]游览计划_斯坦纳树
  13. ArcGIS API For Javascript_4.8-Symbol__SimpleLineSymbol
  14. python Bootstarp框架和inconfont、font-awesome使用
  15. Jetpack 架构组件 Paging 分页加载 MD
  16. SpringCloud分布式事务TCC实现
  17. bootstrap 弹框使用
  18. 2-Sixteenth Scrum Meeting-20151216
  19. Android使用Handler造成内存泄露的分析及解决方法
  20. EasyUI_tabs和layout布局, 点击链接打开标签, 重复点击选中标签

热门文章

  1. OPENVPN2.3配置文档官方说明
  2. 第九章 自定义mixer adapter
  3. jsp的session完成登陆功能
  4. css字体中英文对照表(转)
  5. Spring MVC 学习 之 - 配置简单demo
  6. Spring Data JPA 基本使用
  7. XE: Changing the default http port
  8. mac下的一个类似“_kbhit()”实现
  9. 单独运行shell脚本与crontab运行shell脚本的区别
  10. cas 退出后跳转指定页面