C# 现成能用的字符串加密、解密函数

 http://topic.csdn.net/t/20041013/19/3453232.html

加密:
byte[] bytes=Encoding.Default.GetBytes("要转换的字符串");
Convert.ToBase64String(bytes);
解密:、
byte[] outputb = Convert.FromBase64String("ztKwrsTj");
string orgStr= Encoding.Default.GetString(outputb);

using   System;  
  using   System.Security.Cryptography;  
  using   System.IO;  
  using   System.Text;  
  using   System.Web.Security;  
   
  namespace   Paladin.Common  
  {  
  ///   <summary>  
  ///   Security   的摘要说明。  
  ///   对称加密算法   :   DES   /   TripleDES   /   RC2   /   Rijndael  
  ///   非对称加密算法   :   DSA   /   RSA  
  ///   Base64   算法  
  ///   </summary>  
  public   class   Cryptography  
  {  
  public   Cryptography()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
  //   DES     的加密方法   。  
  //   私钥加密   /   对称算法   。  
  public   static   string   Encrypt_Des(   string   cleanString   )  
  {  
  //.NET   框架提供的对称加密类需要一个密钥和一个新的   IV   来加密和解密数据。  
  //每当使用默认的构造函数创建其中一个托管对称加密类的新实例时,就会自动创建新的密钥和   IV  
  //DES   使用   64   位密钥、64   位块来加密和解密数据。每个数据块迭代   16   次以生成加密文本。  
  //初始化向量(IV)   用来第一次对数据块进行加密   。  
  byte[]   KEY_64   =   {42,   16,   93,   156,   78,   4,   218,   32}; //   指定的   Key  
  byte[]   IV_64   =   {55,   103,   246,   79,   36,   99,   167,   3}; //   初始化向量(IV)  
  DESCryptoServiceProvider   provider   =   new   DESCryptoServiceProvider   (   )   ;  
  MemoryStream   ms   =   new   MemoryStream();  
  CryptoStream   cs   =   new   CryptoStream(   ms   ,   provider.CreateEncryptor(   KEY_64,IV_64   )   ,   CryptoStreamMode.Write   )   ;  
  StreamWriter   sw   =   new   StreamWriter(   cs   )   ;  
  sw.Write(   cleanString   )   ;  
  sw.Flush(   )   ;  
  cs.FlushFinalBlock(   )   ;  
  ms.Flush(   )   ;  
  return   Convert.ToBase64String(   ms.GetBuffer(   )   ,   0   ,   int.Parse(   (   ms.Length.ToString   (   )   )   )   )   ;  
  }  
   
  //   DES     的解密方法   。  
  //   私钥加密   /   对称算法   。  
  public   static   string   Decrypt_Des(   string   encryptedString   )  
  {  
  byte[]   KEY_64   =   {42,   16,   93,   156,   78,   4,   218,   32};  
  byte[]   IV_64   =   {55,   103,   246,   79,   36,   99,   167,   3};  
  DESCryptoServiceProvider   provider   =   new   DESCryptoServiceProvider   (   )   ;  
  byte[]   buffer   =   Convert.FromBase64String(   encryptedString   )   ;  
  MemoryStream   ms   =   new   MemoryStream   (   buffer   )   ;  
  CryptoStream   cs   =   new   CryptoStream(   ms,provider.CreateDecryptor(   KEY_64,IV_64   )   ,   CryptoStreamMode.Read   )   ;  
  StreamReader   sr   =   new   StreamReader(   cs   )   ;  
  return   sr.ReadToEnd   (   )   ;  
   
  }  
   
  //   hash   加密  
  public   static   string   Encrypt_Hash(string   cleanString)  
  {  
  Byte[]   clearBytes   =   new   UnicodeEncoding().GetBytes(cleanString);  
  Byte[]   hashedBytes   =   ((HashAlgorithm)   CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);  
   
  return   BitConverter.ToString(hashedBytes);  
  }  
   
  //   sha1   的方式加密密码  
  public     static   String   Encrypt_Sha1(   String   oriPassWrd   )  
  {  
  String   returnstr="";  
   
  returnstr   =   FormsAuthentication.HashPasswordForStoringInConfigFile(   oriPassWrd   ,   "sha1"   );  
   
  return   returnstr;  
   
  }  
   
  //   DSA   的数字签名  
  //   RSA   类似,不过RSA比DSA慢得多,但比DSA安全。RSA可以选择关键字的大小,越大越安全  
  public   static   byte[]     DsaCrypto_SignData   (   string   content   ,   ref   string   dsaXmlString   )  
  {  
  //先要将字符串转换为字节数组,这与编码有关。  
  // String   content   =   "this   is   a   test.";  
  byte[]   bytes   =   Encoding.ASCII.GetBytes(   content   );  
  //选择签名方式,有RSA和DSA  
  DSACryptoServiceProvider   dsac   =   new   DSACryptoServiceProvider();  
  byte[]   sign   =   dsac.SignData(   bytes   );  
  //当前   Dsa   对象的   xml   表示字符串   。  
  dsaXmlString   =   dsac.ToXmlString(   false   )   ;  
  //sign便是出来的签名结果。  
  return   sign   ;  
  }  
   
  //   DSA   的数字签名认证  
  public   static   void   DsaCrypto_VerifyData   (string   content   ,   byte[]   sign   ,   string   dsaXmlString   )  
  {  
  byte[]   bytes   =   Encoding.ASCII.GetBytes(   content   );  
  //下面是认证了  
  // DSACryptoServiceProvider   dsac2   =   new   DSACryptoServiceProvider();  
  // dsac2.FromXmlString(   dsac.ToXmlString(   false   )   );  
  // bool   _verify   =   dsac2.VerifyData(   bytes,   sign   );  
  DSACryptoServiceProvider   dsac   =   new   DSACryptoServiceProvider();  
  dsac.FromXmlString(   dsaXmlString   );  
  bool   _verify   =   dsac.VerifyData(   bytes,   sign   );  
  if   (   _verify   )    
  {  
  common.setMessage   (   "通过"   )   ;  
  }    
  else    
  {  
  common.setMessage   (   "不能通过"   )   ;  
  }  
  }  
  }//class  
  }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aaaaatiger/archive/2009/11/17/4824517.aspx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值