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());
}

DESCryptoServiceProvider 类加密解密的更多相关文章

  1. [C#] 常用工具类——加密解密类

    using System; using System.Configuration; using System.Collections.Generic; using System.Text; using ...

  2. C# 之TripleDESCryptoServiceProvider类加密/解密程序

    这篇博文的编写基于以下博客地址提供的知识: TripleDESCryptoServiceProvider 加密解密 基于该博客,我的毕业设计中密码存储加密字符串这一问题得到解决.

  3. C# MD5加密解密帮助类

    /// <summary>    /// MD5加密解密帮助类    /// </summary>    public static class DESHelper    {  ...

  4. C#做的一个加密/解密的类

    转自:http://www.16aspx.com/Article/3904 using System; using System.Security.Cryptography; using System ...

  5. C#工具:加密解密帮助类

    using System; using System.IO; using System.Security.Cryptography; using System.Text; //加密字符串,注意strE ...

  6. .Net(c#)加密解密工具类:

    /// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelper { #region des实 ...

  7. C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密

    public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...

  8. MD5加密解密帮助类

    using System; using System.Security.Cryptography; using System.Text; namespace Maticsoft.DBUtility { ...

  9. 基于正则的INI读写工具类,支持加密解密

    看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini: 1.XML功能强大表达能力强,同时扩展性好. 2.它的主要优势是异构平台的整合.通讯. 3. ...

随机推荐

  1. CentOS7/Ubuntu Linux java jdk 环境变量配置

    [root@localhost sony]# tar -zxvf jdk-8u121-linux-x64.tar.gz [root@localhost sony]# .0_121 /usr/local ...

  2. 性能测试工具LoadRunner05-LR之Virtual User Generator html模式与url模式

    “HTML-based script”说明 在默认情况下,选择“HTML-based script”,说明脚本中采用HTML页面的形式来表示,这种方式的脚本容易维护,容易理解,推荐这种方式录制 “UR ...

  3. java内存区域与内存溢出

    JVM的内存区域划分: jvm的内存区域分为5部分:程序计数器,虚拟机栈,本地方法栈,堆跟方法区. 程序计数器,虚拟机栈,本地方法栈三部分是线程私有的,堆跟方法区是公共的. 1.程序计数器 是一块较小 ...

  4. XStream xml转java对象2

    <?xml version="1.0" encoding="UTF-8" ?> <person> <name>yunyun& ...

  5. SQL内外连接的区别

    项目当中,需要将SQL server中的部分数据导入mongo中,由于SQL是关系型数据库的原因,需要联合多表进行查询,因此,了解了下SQL中内外连接的相关概念,以作备注: 1.内联接(典型的联接运算 ...

  6. [HZOI 2015]复仇的序幕曲

    [题目描述] 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所 ...

  7. log4net 基础

    log4net:日志输出工具. 新建工程Log4NetDemo App.config配置如下: <?xml version="1.0" encoding="utf- ...

  8. SQL简单语句(增删改查)

    简单的SQL语句增删改查操作 说明: 在mysql里面亲测结果正确    用到的表(学生表:studnets) 1.创建一个学生表,(学号,姓名,性别,家庭住址) mysql> create t ...

  9. intellijidea课程 intellijidea神器使用技巧1-4 idea安装

    idea安装 run intellij idea==>finish ==>do not import settings==>ok==>evaluate for free==&g ...

  10. vue 修饰符 整理

    事件修饰符 .stop <!-- 阻止单击事件继续传播 --> <a v-on:click.stop="doThis"></a> .preven ...