1. class DESHelper
  2. {
  3.  
  4. string _iv = "9AUP";
  5. string _key = "9d";
  6.  
  7. /// <summary>
  8. /// DES加密偏移量,必须是>=8位长的字符串
  9. /// </summary>
  10. public string Iv
  11. {
  12. get { return _iv; }
  13. set { _iv = value; }
  14. }
  15.  
  16. /// <summary>
  17. /// DES加密的私钥,必须是8位长的字符串
  18. /// </summary>
  19. public string Key
  20. {
  21. get { return _key; }
  22. set { _key = value; }
  23. }
  24.  
  25. /// <summary>
  26. /// 对字符串进行DES加密
  27. /// </summary>
  28. /// <param name="sourceString">待加密的字符串</param>
  29. /// <returns>加密后的BASE64编码的字符串</returns>
  30. public string Encrypt(string sourceString)
  31. {
  32. byte[] btKey = Encoding.Default.GetBytes(_key);
  33. byte[] btIv = Encoding.Default.GetBytes(_iv);
  34. var des = new DESCryptoServiceProvider();
  35. using (var ms = new MemoryStream())
  36. {
  37. byte[] inData = Encoding.Default.GetBytes(sourceString);
  38. try
  39. {
  40. using (var cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
  41. {
  42. cs.Write(inData, 0, inData.Length);
  43. cs.FlushFinalBlock();
  44. }
  45.  
  46. return Convert.ToBase64String(ms.ToArray());
  47. }
  48. catch (Exception ex)
  49. {
  50. throw ex;
  51. }
  52. }
  53. }
  54.  
  55. /// <summary>
  56. /// 对DES加密后的字符串进行解密
  57. /// </summary>
  58. /// <param name="encryptedString">待解密的字符串</param>
  59. /// <returns>解密后的字符串</returns>
  60. public string Decrypt(string encryptedString)
  61. {
  62. byte[] btKey = Encoding.Default.GetBytes(_key);
  63. byte[] btIv = Encoding.Default.GetBytes(_iv);
  64. var des = new DESCryptoServiceProvider();
  65.  
  66. using (var ms = new MemoryStream())
  67. {
  68. try
  69. {
  70. byte[] inData = Convert.FromBase64String(encryptedString);
  71. using (var cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
  72. {
  73. cs.Write(inData, 0, inData.Length);
  74. cs.FlushFinalBlock();
  75. }
  76.  
  77. return Encoding.Default.GetString(ms.ToArray());
  78. }
  79. catch (Exception ex)
  80. {
  81. throw ex;
  82. }
  83. }
  84. }
  85. }

  

c# DES加密解密的更多相关文章

  1. php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

    PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...

  2. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  3. DES加密解密

    加密后生成Base64字符串,并去除'='字符. 加密后替换掉'+',这样加密后的字符串可以作为url参数传递. using System; using System.IO; using System ...

  4. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  5. Golang之AES/DES加密解密

    AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...

  6. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  7. 兼容PHP和Java的des加密解密代码分享

    这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 作为一个iOS工程师来解决安卓的问 ...

  8. php实现和c#一致的DES加密解密

    原文:php实现和c#一致的DES加密解密 php实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用.以下正确代码是我经过苦苦才找到的.希望大家在系统整合时能用的上. 注意: ...

  9. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...

  10. php中des加密解密 匹配C#des加密解密 对称加密

    原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是 ...

随机推荐

  1. IOS 杂笔-17(堆区栈区等)

    栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b; ...

  2. python之socket-ssh实例

    本文转载自大王http://www.cnblogs.com/alex3714/articles/5830365.html 加有自己的注释,应该会比原文更突出重点些 一. 基本Socket实例 前面讲了 ...

  3. 使用putty与SSHSecureShellClient登录远程服务器完成与本地Git项目的同步

    使用软件远程登录管理服务器 今天给大家介绍两款远程登录管理服务器的软件(Putty和SSHSecureShellClient),这两款也是我在工作中经常的软件. 使用 PuTTY 远程登录管理服务器 ...

  4. sun.misc.Unsafe的理解

    以下sun.misc.Unsafe源码和demo基于jdk1.7: 最近在看J.U.C里的源码,很多都用到了sun.misc.Unsafe这个类,一知半解,看起来总感觉有点不尽兴,所以打算对Unsaf ...

  5. [Erlang 0104] 当Erlang遇到Solr

        Joe Armstrong的访谈中有一段关于"打开黑盒子"的阐述,给我留下很深的印象:Joe Armstrong在做XWindows开发时没有使用对应的类库,而是在了解XW ...

  6. [AlwaysOn Availability Groups]排查:AG配置

    排查AG配置 本文主要用来帮助排查在AG配置时出现的问题,包括,AG功能被禁用,账号配置不正确,数据库镜像endpoint不存在,endpoint不能访问. Section Description A ...

  7. 聊下git pull --rebase

    有一种场景是经常发生的. 大家都基于develop拉出分支进行并行开发,这里的分支可能是多到数十个.然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周.在这期间你可能需要时不时的需要pull下远程 ...

  8. C语言核心之数组和指针详解

    指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...

  9. W3School-CSS 轮廓(Outline)实例

    CSS 轮廓(Outline)实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内 ...

  10. Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包

    1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...