打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c#字符串加密与解密封装
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Security.Cryptography;  
  6. using System.IO;  
  7.   
  8. namespace 字符串加密解密封装  
  9. {  
  10.   
  11.     /// <summary>  
  12.     /// 字符串加密  
  13.     /// </summary>  
  14.     class  Encryption_Decryption  
  15.     {  
  16.           
  17.         static byte[] Key{get;set;}//加密的密钥  
  18.         static byte[] Iv{get;set;} //加密的初始化矢量,初始化加密函数的变量。  
  19.   
  20.         static Encryption_Decryption()  
  21.         {  
  22.             //算法签名,这里我用的是TripleDES加密算法,TripleDESCryptoServiceProvider构造方法同时会初始化一组随机的key和IV。  
  23.             TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();             
  24.             Key=tDESalg.Key;  
  25.             Iv=tDESalg.IV;  
  26.         }  
  27.   
  28.         /// <summary>  
  29.         /// 字符串加密  
  30.         /// </summary>  
  31.         /// <param name="encStr">需要加密的字符串</param>  
  32.         /// <returns>一个已经加密的字符串的二进制流</returns>  
  33.         public static byte[] EncStream(string encStr)  
  34.         {  
  35.             //将用户传进来的字符串转换成编码为UTF8的二进制流  
  36.             byte[] encStrStream = Encoding.UTF8.GetBytes(encStr);  
  37.               
  38.   
  39.             //建立一个MemoryStream,这里面存放加密后的数据流  
  40.             MemoryStream mStream = new MemoryStream();  
  41.   
  42.             //使用MemoryStream和key,IV新建一个CryptoStream对象    
  43.             CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key, Iv), CryptoStreamMode.Write);  
  44.   
  45.             //将加密后的字节流写入到MemoryStream  
  46.             cStream.Write(encStrStream, 0, encStrStream.Length);  
  47.   
  48.             //把缓冲区中的最后状态更新到MemoryStream,并清除cStream的缓存区  
  49.             cStream.FlushFinalBlock();  
  50.   
  51.             // 把解密后的数据流转成字节流  
  52.             byte[] ret = mStream.ToArray();  
  53.   
  54.             //关闭两个streams  
  55.   
  56.             cStream.Close();  
  57.             mStream.Close();  
  58.   
  59.             return ret;  
  60.         }  
  61.       
  62.   
  63.         /// <summary>  
  64.         /// 对加密二进制流进行解密  
  65.         /// </summary>  
  66.         /// <param name="byteStream">需要解密的二进制流</param>  
  67.         /// <returns>返回一个已经解密的字符串</returns>  
  68.         public static string DecStrStream(byte[] byteStream)  
  69.         {  
  70.             // 建立一个MemoryStream,这里面存放加密后的数据流  
  71.             MemoryStream msDecrypt = new MemoryStream(byteStream);  
  72.   
  73.             // 使用MemoryStream 和key、IV新建一个CryptoStream 对象  
  74.             CryptoStream csDecrypt = new CryptoStream(msDecrypt, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, Iv), CryptoStreamMode.Read);  
  75.   
  76.             // 根据密文byte[]的长度(可能比加密前的明文长),新建一个存放解密后明文的byte[]  
  77.             byte[] DecryptDataArray = new byte[byteStream.Length];  
  78.   
  79.             // 把解密后的数据读入到DecryptDataArray  
  80.             csDecrypt.Read(DecryptDataArray, 0, DecryptDataArray.Length);  
  81.   
  82.             string DecStr = Encoding.UTF8.GetString(DecryptDataArray);  
  83.   
  84.             msDecrypt.Close();  
  85.   
  86.             csDecrypt.Close();  
  87.   
  88.             return DecStr;  
  89.         }  
  90.     }  
  91.   
  92.   
  93.     class Program  
  94.     {  
  95.         //测试加密,解密都成功  
  96.         static void Main(string[] args)  
  97.         {  
  98.             //加密测试  
  99.             byte[] s = Encryption_Decryption.EncStream("你好");  
  100.   
  101.             foreach (byte b in s)  
  102.             {  
  103.                 Console.WriteLine(b);  
  104.             }  
  105.   
  106.             //解密测试  
  107.             string ss = Encryption_Decryption.DecStrStream(s);  
  108.             Console.WriteLine(ss);  
  109.   
  110.             Console.ReadKey();  
  111.         }  
  112.     }  
  113. }  



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
保护自己的软件
使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
字符串加密与解密
C#里的一些加密解密标准函数示例——DES,SHA1,RSA
C#一个字符串的加密与解密
用C#实现的数据加密(一) —— 对称加密算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服