首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  其它技术  |  加密解密  


C# 对称加密解密算法


原作者:不详    源出处:CSDN   发布者:施昌权    发布类型:转载    发布日期:2008-12-02


可用于文件,和数据库字段的加解密。

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

namespace Comon
{
  /// <summary>
  /// KeyCryp 的摘要说明。
  /// </summary>
  public class KeyCryp
  {
   private SymmetricAlgorithm mobjCryptoService;
   private string Key;

  /// <summary>
   /// 对称加密类的构造函数
   /// </summary>
   public KeyCryp()
   {
    mobjCryptoService = new RijndaelManaged();
    Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
   }
   /// <summary>
   /// 获得密钥
   /// </summary>
   /// <returns>密钥</returns>
   private byte[] GetLegalKey()
   {
    string sTemp = Key;
    mobjCryptoService.GenerateKey();
    byte[] bytTemp = mobjCryptoService.Key;
    int KeyLength = bytTemp.Length;
    if (sTemp.Length > KeyLength)
     sTemp = sTemp.Substring(0, KeyLength);
    else if (sTemp.Length < KeyLength)
     sTemp = sTemp.PadRight(KeyLength, ' ');
    return ASCIIEncoding.ASCII.GetBytes(sTemp);
   }
   /// <summary>
   /// 获得初始向量IV
   /// </summary>
   /// <returns>初试向量IV</returns>
   private byte[] GetLegalIV()
   {
    string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
    mobjCryptoService.GenerateIV();
    byte[] bytTemp = mobjCryptoService.IV;
    int IVLength = bytTemp.Length;
    if (sTemp.Length > IVLength)
     sTemp = sTemp.Substring(0, IVLength);
    else if (sTemp.Length < IVLength)
     sTemp = sTemp.PadRight(IVLength, ' ');
    return ASCIIEncoding.ASCII.GetBytes(sTemp);
   }
   /// <summary>
   /// 加密方法
   /// </summary>
   /// <param name="Source">待加密的串</param>
   /// <returns>经过加密的串</returns>
   public string Encrypto(string Source)
   {
    byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
    MemoryStream ms = new MemoryStream();
    mobjCryptoService.Key = GetLegalKey();
    mobjCryptoService.IV = GetLegalIV();
    ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
    CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
    cs.Write(bytIn, 0, bytIn.Length);
    cs.FlushFinalBlock();
    ms.Close();
    byte[] bytOut = ms.ToArray();
    return Convert.ToBase64String(bytOut);
   }
   /// <summary>
   /// 解密方法
   /// </summary>
   /// <param name="Source">待解密的串</param>
   /// <returns>经过解密的串</returns>
   public string Decrypto(string Source)
   {
    byte[] bytIn = Convert.FromBase64String(Source);
    MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
    mobjCryptoService.Key = GetLegalKey();
    mobjCryptoService.IV = GetLegalIV();
    ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
    CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
    StreamReader sr = new StreamReader(cs);
    return sr.ReadToEnd();
   }
 
  }
}


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号