DESCryptoServiceProvider  点击查看介绍

加密解密辅助类:点击查看

私钥加密

定义:定义一个包装对象来访问加密服务提供程序 (CSP) 版本的数据加密标准 (DES) 算法。 此类不能被继承。

研究这个类不如去研究它的父类,所以我们把重点转移到 Des这个类

Des

定义:表示数据加密标准 (DES) 算法的基类,所有 DES 实现都必须从此基类派生。

你需要知道:

你只用设置Key(秘钥)和 IV(向量)。

4.0以下

   des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(, ));

4.5或以上就会显示此类已过时,所以我们得换一种写法。

我们可以根据密码来加密

  public static string MD5(string str)
{
//微软md5方法参考return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "md5");
byte[] b = Encoding.Default.GetBytes(str);
b = new MD5CryptoServiceProvider().ComputeHash(b);
string ret = "";
for (int i = ; i < b.Length; i++)
ret += b[i].ToString("x").PadLeft(, ''); //转成16进制,如果小于2位用0补充
return ret;
}

我们配置好了Key和IV ,就可以使用这个了,你可以知道,加密和解密所配置的Key和IV必须为一样的。

  加密/解码都返回这个接口

准备工作完成了。最后一个类

CryptoStream 类

定义将数据流链接到加密转换的流。

第一个参数         流,

第二个参数         接口

第三个参数       枚举

完整的一套加密:

  ///// <summary>
///// 加密数据
///// </summary>
///// <param name="text">加密字符串</param>
///// <param name="skey">生成秘钥,默认为MATICSOFT</param>
///// <returns>返回加密字符串</returns>
public static string Encrypt(string Text, string sKey = "MATICSOFT")
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray;
inputByteArray = Encoding.Default.GetBytes(Text); //把文本转成字节
des.Key = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(, ));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, , inputByteArray.Length); //写
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);//十六进制字符串,后面的2为精度.
}
return ret.ToString();
} /// <summary>
/// 对秘钥进行处理
/// </summary>
/// <param name="str">你的秘钥</param>
/// <returns></returns>
public static string MD5(string str)
{
//微软md5方法参考return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "md5");
byte[] b = Encoding.Default.GetBytes(str);
b = new MD5CryptoServiceProvider().ComputeHash(b);
string ret = "";
for (int i = ; i < b.Length; i++)
ret += b[i].ToString("x").PadLeft(, ''); //转成16进制,如果小于2位用0补充
return ret;
}
/// <summary>
/// 解密数据
/// </summary>
/// <param name="Text">加密的字符串</param>
/// <param name="sKey">解密秘钥</param>
/// <returns>解密后的字符串</returns>
public static string Decrypt(string Text, string sKey = "MATICSOFT")
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
int len;
len = Text.Length / ;
byte[] inputByteArray = new byte[len];
int x, i;
for (x = ; x < len; x++)
{
i = Convert.ToInt32(Text.Substring(x * , ), );
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(, ));
des.IV = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(, ));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.Default.GetString(ms.ToArray());
}

最新文章

  1. Java实现购物车功能:方式一:存放在session中.方式二:存储在数据库中
  2. C++11 并发指南后续更新
  3. iOS学习—JSON数据解析
  4. bug数量问题研究
  5. AAC 格式分析
  6. iOS代码实现:创建按钮,绑定按钮事件,读取控件值
  7. 关于一些Android冷知识
  8. 各加密模式的演示(ECB,CBC)
  9. MySQL查询指定时间的数据
  10. [Windows Phone] 地图控制项的经纬度
  11. Matlab.NET混合编程技巧之——找出Matlab内置函数
  12. Spring学习笔记(三)之装配Bean
  13. 110个oracle常用函数总结
  14. Mybatis批量插入、批量更新
  15. [matlab] 15.罚函数降维
  16. No.0
  17. Delphi fmx控件在手机滑动与单击的问题
  18. sqlserver 发送http请求
  19. 奶瓶(beini)破解无线密码流程:安装、抓包、从虚拟机(VMware)拷贝握手包(拷贝到硬盘、U盘)、跑包
  20. web实现QQ头像上传截取功能

热门文章

  1. Linux IPC 共享内存
  2. UGUI 用脚本动态改变Button颜色组合
  3. 利用nginx的fastcgi_cache模块来做缓存
  4. Spring-cloud微服务 Eureka学习教程-单服务器配置之快速搭建EurekaServer、EurekaClient(基础)
  5. nProtect APPGuard安卓反外挂分析
  6. c++ stl sort example
  7. 原生Js在各大浏览器上、火狐、ie、谷歌、360等出现的不兼容问题。
  8. Hive建模
  9. PHP:如果正确加载js、css、images等静态文件
  10. May 1 2017 Week 18 Monday