首页 > 代码库 > DESCryptoServiceProvider 类加密解密
DESCryptoServiceProvider 类加密解密
DESCryptoServiceProvider 点击查看介绍
加密解密辅助类:点击查看
私钥加密
定义:定义一个包装对象来访问加密服务提供程序 (CSP) 版本的数据加密标准 (DES) 算法。 此类不能被继承。
研究这个类不如去研究它的父类,所以我们把重点转移到 Des这个类
Des
定义:表示数据加密标准 (DES) 算法的基类,所有 DES 实现都必须从此基类派生。
你需要知道:
你只用设置Key(秘钥)和 IV(向量)。
4.0以下
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
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 = 0; i < b.Length; i++) ret += b[i].ToString("x").PadLeft(2, ‘0‘); //转成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(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, 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 = 0; i < b.Length; i++) ret += b[i].ToString("x").PadLeft(2, ‘0‘); //转成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 / 2; byte[] inputByteArray = new byte[len]; int x, i; for (x = 0; x < len; x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(MD5(sKey).Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Encoding.Default.GetString(ms.ToArray()); }
DESCryptoServiceProvider 类加密解密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。