.net名称空间System.Security.Cryptography下DESCryptoServiceProvider类为我们提供了加密和解密方法,我们只需少许代码便可实现加密和解密。

稍感不托的地方,如果不是自行加密的在解密时会报错。

使用注意事项,密钥64位,8个字符。

定义默认加密密钥

  1. const string KEY_64 = "ChinabCd";
  2. const string IV_64 = "ChinabCd";

加密

  1. /// <summary>
  2. /// 按指定键值进行加密
  3. /// </summary>
  4. /// <param name="strContent">要加密字符</param>
  5. /// <param name="strKey">自定义键值</param>
  6. /// <returns></returns>
  7.  
  8. public static string EnCrypt(string strContent, string strKey)
  9.  
  10. {
  11. if (string.IsNullOrEmpty(strContent)) return string.Empty;
  12. if (strKey.Length > ) strKey = strKey.Substring(, ); else strKey = KEY_64;
  13. byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
  14. byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
  15.  
  16. DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
  17. int i = cryptoProvider.KeySize;
  18. MemoryStream ms = new MemoryStream();
  19. CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
  20.  
  21. StreamWriter sw = new StreamWriter(cst);
  22. sw.Write(strContent);
  23. sw.Flush();
  24. cst.FlushFinalBlock();
  25. sw.Flush();
  26. return Convert.ToBase64String(ms.GetBuffer(), , (int)ms.Length);
  27. }

解密

  1. /// <summary>
  2. /// 按指定键值进行解密
  3. /// </summary>
  4. /// <param name="strContent">要解密字符</param>
  5. /// <param name="strKey">加密时使用的键值</param>
  6. /// <returns></returns>
  7. public static string DeCrypt(string strContent, string strKey)
  8. {
  9. if (string.IsNullOrEmpty(strContent)) return string.Empty;
  10. if (strKey.Length > ) strKey = strKey.Substring(, ); else strKey = KEY_64;
  11. byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(strKey);
  12. byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
  13.  
  14. byte[] byEnc;
  15. try
  16. {
  17. byEnc = Convert.FromBase64String(strContent);
  18. }
  19. catch
  20. {
  21. return null;
  22. }
  23.  
  24. DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
  25. MemoryStream ms = new MemoryStream(byEnc);
  26. CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
  27. StreamReader sr = new StreamReader(cst);
  28. return sr.ReadToEnd();
  29. }

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

  1. DESCryptoServiceProvider加密解密的简单使用例子

    DES.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  2. DESCryptoServiceProvider 类加密解密

    DESCryptoServiceProvider  点击查看介绍 加密解密辅助类:点击查看 私钥加密 定义:定义一个包装对象来访问加密服务提供程序 (CSP) 版本的数据加密标准 (DES) 算法.  ...

  3. RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

    原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...

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

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

  5. 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解

    原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...

  6. .Net(c#)加密解密之Aes和Des

    .Net(c#)加密解密工具类: /// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelp ...

  7. DES加密解密

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

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

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

  9. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  10. C#中使用DES和AES加密解密

    C#中使用DES和AES加密解密 2008-01-12 09:37 using System;using System.Text;using System.Security.Cryptography; ...

随机推荐

  1. proxool

    配置database.xml <!--数据源 读写 --> <bean id="dataSourceRW" class="com.elong.ihote ...

  2. ExtJs布局之accordion,fit,auto

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  3. iOS开发--自动布局

    距离左边的: 距离顶部的: 距离右边的: 距离底部的:

  4. 超级内存NVDIMM

    1.序言 基于非易失性内存(NVDIMM)的新一代内存条规格已经研制成功,其中集成了DRAM和非易失性存储芯片,能够在完全断电的时候完整保存内存数据,并支持主内存在持久高速高性能计算上的应用.区别于普 ...

  5. Minifilter微过滤框架:框架介绍以及驱动层和应用层的通讯

    minifilter是sfilter后微软推出的过滤驱动框架.相比于sfilter,他更容易使用,需要程序员做的编码更简洁. 系统为minifilter专门制作了一个过滤管理器,这个管理器本身其实是一 ...

  6. PHP使用CURL详解

    CURL是一个非常强大的开源库,支持很多协议,包括HTTP.FTP.TELNET等,我们使用它来发送HTTP请求.它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS ...

  7. HttpClient基本用法

    <Apache HttpClient 4.3开发指南> Apache HttpClient 4系列已经发布很久了,但由于它与HttpClient 3.x版本完全不兼容,以至于业内采用此库的 ...

  8. SparkContext和RDD

    SparkContext.scala实现了一个SparkContext的class和object,SparkContext类似Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等. ...

  9. [IT] 关闭笔记本的蜂鸣提示

    很久没有写什么了,今天开过workshop, 稍微放松些, 一时动念上来看看,没想到最近一篇都是2010年的了, 不得不感叹时光流逝之快啊. 那就写点什么吧. 现在每天工作用的DELL笔记本,性能差强 ...

  10. IMP导入数据 报错 IMP-00058 ORA-01691 IMP-00028

    查看导入日志,发现错误如下: oracle@sspt:/back/log> cat imp.HD_HDXX.log Connected to: Oracle Database 11g Enter ...