1. using System;
  2. //这个是使用DES的基础
  3. using System.Security.Cryptography;
  4. //这个是处理文字编码的前提
  5. using System.Text;
  6. //以“流”的形式处理文字,也是微软DES算法要求的
  7. using System.IO;
  8. /// <summary>
  9. /// DES加密方法
  10. /// </summary>
  11. /// <param name="strPlain">明文</param>
  12. /// <param name="strDESKey">密钥</param>
  13. /// <param name="strDESIV">向量</param>
  14. /// <returns>密文</returns>
  15. public string DESEncrypt(string strPlain,string strDESKey,string strDESIV)
  16. {
  17. //把密钥转换成字节数组
  18. byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
  19. //把向量转换成字节数组
  20. byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
  21. //声明1个新的DES对象
  22. DESCryptoServiceProvider desEncrypt=new DESCryptoServiceProvider();
  23. //开辟一块内存流
  24. MemoryStream msEncrypt=new MemoryStream();
  25. //把内存流对象包装成加密流对象
  26. CryptoStream csEncrypt=new CryptoStream(msEncrypt,desEncrypt.CreateEncryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Write);
  27. //把加密流对象包装成写入流对象
  28. StreamWriter swEncrypt=new StreamWriter(csEncrypt);
  29. //写入流对象写入明文
  30. swEncrypt.WriteLine(strPlain);
  31. //写入流关闭
  32. swEncrypt.Close();
  33. //加密流关闭
  34. csEncrypt.Close();
  35. //把内存流转换成字节数组,内存流现在已经是密文了
  36. byte[] bytesCipher=msEncrypt.ToArray();
  37. //内存流关闭
  38. msEncrypt.Close();
  39. //把密文字节数组转换为字符串,并返回
  40. return UnicodeEncoding.Unicode.GetString(bytesCipher);
  41. }
  42. /// <summary>
  43. /// DES解密方法
  44. /// </summary>
  45. /// <param name="strCipher">密文</param>
  46. /// <param name="strDESKey">密钥</param>
  47. /// <param name="strDESIV">向量</param>
  48. /// <returns>明文</returns>
  49. public string DESDecrypt(string strCipher,string strDESKey,string strDESIV)
  50. {
  51. //把密钥转换成字节数组
  52. byte[] bytesDESKey=ASCIIEncoding.ASCII.GetBytes(strDESKey);
  53. //把向量转换成字节数组
  54. byte[] bytesDESIV=ASCIIEncoding.ASCII.GetBytes(strDESIV);
  55. //把密文转换成字节数组
  56. byte[] bytesCipher=UnicodeEncoding.Unicode.GetBytes(strCipher);
  57. //声明1个新的DES对象
  58. DESCryptoServiceProvider desDecrypt=new DESCryptoServiceProvider();
  59. //开辟一块内存流,并存放密文字节数组
  60. MemoryStream msDecrypt=new MemoryStream(bytesCipher);
  61. //把内存流对象包装成解密流对象
  62. CryptoStream csDecrypt=new CryptoStream(msDecrypt,desDecrypt.CreateDecryptor(bytesDESKey,bytesDESIV),CryptoStreamMode.Read);
  63. //把解密流对象包装成读出流对象
  64. StreamReader srDecrypt=new StreamReader(csDecrypt);
  65. //明文=读出流的读出内容
  66. string strPlainText=srDecrypt.ReadLine();
  67. //读出流关闭
  68. srDecrypt.Close();
  69. //解密流关闭
  70. csDecrypt.Close();
  71. //内存流关闭
  72. msDecrypt.Close();
  73. //返回明文
  74. return strPlainText;
  75. }

C# DES的更多相关文章

  1. 在.NET Core 里使用 BouncyCastle 的DES加密算法

    .NET Core上面的DES等加密算法要等到1.2 才支持,我们可是急需这个算法的支持,文章<使用 JavaScriptService 在.NET Core 里实现DES加密算法>需要用 ...

  2. 使用 JavaScriptService 在.NET Core 里实现DES加密算法

    文章<ASP.NET Core love JavaScript>和<跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题> ...

  3. [C#] 简单的 Helper 封装 -- SecurityHelper 安全助手:封装加密算法(MD5、SHA、HMAC、DES、RSA)

    using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Wen. ...

  4. 4、DES和RSA简介

    DES是分组加密算法,速度快,使用单一密钥,加密解密都使用同一个密钥,一般用于大量数据加密,目前处于半淘汰状态. RSA算法是流式加密算法,速度慢,但是使用成对的密钥,加密解密使用不同的密钥,有利于保 ...

  5. Android数据加密之Des加密

    前言: 端午节前有个同事咨询我有关Android DES加密的相关实现,简单的实现了一下,今天来总结一下. 其他几种加密方式: Android数据加密之Rsa加密 Android数据加密之Aes加密 ...

  6. 密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)

    目录 一.数据加密标准 - Data Encryption Standard(DES) 二.高级加密标准 - Advanced Encryption Standard(AES) 三.消息摘要算法第五版 ...

  7. When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)

    关于网络安全的数据加密部分,本来打算总结一篇博客搞定,没想到东西太多,这已是第三篇了,而且这篇写了多次,熬了多次夜,真是again and again.起个名字:数据加密三部曲,前两部链接如下: 整体 ...

  8. Java 加解密 AES DES TripleDes

    package xxx.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypt ...

  9. .NET和JAVA中BYTE的区别以及JAVA中“DES/CBC/PKCS5PADDING” 加密解密在.NET中的实现

    场景:java 作为客户端调用已有的一个.net写的server的webservice,输入string,返回字节数组. 问题:返回的值不是自己想要的,跟.net客户端直接调用总是有差距 分析:平台不 ...

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

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

随机推荐

  1. Supervisor的安装与使用入门

    Supervisor是一个进程管理工具,官方的说法 自己开发的应用往往也希望做到随系统自动启动, 而且启动之后最好还能方便的控制其停止/重启. 传统的做法是在 /etc/init.d/ 下建立启动脚本 ...

  2. 哪里有比较全的hadoop视频教程

    robby老师讲了套hadoop视频,讲的比的深入浅出,内容很丰富,把网盘下载地址提供给大家一下: 视频下载啦很大,有图有真相: 1,Hadoop介绍,HDFS和MapReduce工作原理:http: ...

  3. Chapter 1 Securing Your Server and Network(6):为SQL Server訪问配置防火墙

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38082123,专题文件夹:http://blog.csdn.net/dba_huangz ...

  4. \\ip 映射 指定的网络名不再可用

    问题:\\ip 映射  指定的网络名不再可用 解决方法:服务器端打开服务列表  services.msc 启动两个进程 1.Computer Browser 2. Workstation 就正常了~~ ...

  5. careercup-排序和查找 11.4

    11.4 设想你有一个20GB的文件,每一行一个字符串.请说明将如何对这个文件进行排序. 解法: 当面试官给出20GB大小的限制时,实际上在暗示些什么.就此题而言,这表明他们不希望你将数据全部载入内存 ...

  6. apache+php+mysql最新版windows下

    卸载以前的Apache 1.控制面板先卸载 2.删除E:\Program Files (x86)\Apache Software Foundation下的apache目录 一.安装apache 1.c ...

  7. lsb_release 提示命令不存在

    1. 报错信息 bash: lsb_release: command not found 2. 问题原因 未安装 lsb_release 命令 3. 解决方法 用 yum 命令安装 lsb_relea ...

  8. Android(java)学习笔记144:Android音视频录制类MediaRecorder用法举例

    Android语音录制可以通过MediaRecorder和AudioRecorder.MediaRecorder本来是多媒体录制控件,可以同时录制视频和语音,当不指定视频源时就只录制语音(默认录制语言 ...

  9. quartz多个scheduler实现

    1.首先排除错误用法 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = sche ...

  10. day-5

    /* 还有几半天了 上午考试暴力暴力暴力... 亏我还写了对拍 没有卵用 T2 差点事 T3不难却没咋么认真想 这tm就很尴尬了23333 下午整理题 一下午.... 晚上打月赛 + 单调队列 继续说 ...