对称加密解密通用类库函数

对称加密解密通用类库函数 

  

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

namespace Common
{
 /// <summary>
 /// 加密解密通用类库函数
 ///Copyright (C), 2004, kwklover(邝伟科)
 ///File name:Crypto.cs
 ///Author:邝伟科     Version:1.0        Date:2004年4月21日
 ///Description:可逆的通用对称加密解密函数集                        
 /// </summary>
 public class Crypto
 {
  private string _CryptText;  //待加密和解密的字符序列变量
  private byte[] _CryptKey;   //加密解密私钥变量
  private byte[] _CryptIV;    //加密解密初始化向量IV变量

  /// <summary>
  /// 待加密或解密的字符序列
  /// </summary>
  public string CryptText
  {
   set
   {
       _CryptText=value;
   }
   get
   {
      return _CryptText;
   }
  }

  /// <summary>
  /// 加密私钥
  /// </summary>
  public byte[] CryptKey
  {
   set
   {
       _CryptKey=value;
   }
   get
   {
       return _CryptKey;
   }
  }

  /// <summary>
  /// 加密的初始化向量IV
  /// </summary>
  public byte[] CryptIV
  {
   set
   {
       _CryptIV=value;
   }
   get
   {
       return _CryptIV;
   }
  }

  public Crypto()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  /// <summary>
  /// 加密函数,用于对字符串进行加密。需要提供相应的密钥和IV。
  /// </summary>
  /// <returns></returns>
  public string Encrypt()
  {
   string strEnText=CryptText;
   byte[] EnKey=CryptKey;
   byte[] EnIV=CryptIV;

   byte[] inputByteArray=System.Text.Encoding.UTF8.GetBytes(strEnText);

   //此处也可以创建其他的解密类实例,但注意不同(长度)的加密类要求不同的密钥Key和初始化向量IV
   RijndaelManaged RMCrypto = new RijndaelManaged();

   MemoryStream ms=new MemoryStream();
   CryptoStream cs=new CryptoStream(ms,RMCrypto.CreateEncryptor(EnKey,EnIV),CryptoStreamMode.Write);
   cs.Write(inputByteArray,0,inputByteArray.Length);
   cs.FlushFinalBlock();

   return Convert.ToBase64String(ms.ToArray());
  }

  /// <summary>
  /// 解密函数,用于经过加密的字符序列进行加密。需要提供相应的密钥和IV。
  /// </summary>
  /// <returns></returns>
  public string Decrypt()
  {
   string strDeText=CryptText;
   byte[] DeKey=CryptKey;
   byte[] DeIV=CryptIV;

      byte[] inputByteArray=Convert.FromBase64String(strDeText);

   //此处也可以创建其他的解密类实例,但注意不同的加密类要求不同(长度)的密钥Key和初始化向量IV
   RijndaelManaged RMCrypto = new RijndaelManaged();

   MemoryStream ms=new MemoryStream();
   CryptoStream cs=new CryptoStream(ms,RMCrypto.CreateDecryptor(DeKey,DeIV),CryptoStreamMode.Write);
   cs.Write(inputByteArray,0,inputByteArray.Length);
   cs.FlushFinalBlock();

   return System.Text.Encoding.UTF8.GetString(ms.ToArray());
  }
 }
}

 
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值