用C#实现的对称加密算法

发布时间:2016-12-10 11:27:03 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"用C#实现的对称加密算法",主要涉及到用C#实现的对称加密算法方面的内容,对于用C#实现的对称加密算法感兴趣的同学可以参考一下。

       以下是关于对称加密算法的C#实现代码,大家可以根据需要更改不同的算法,文中以Rijndael算法为例:using System;using System.IO;using System.Security.Cryptography; using System.Text; namespace DataCrypto{ /// <summary> /// 对称加密算法类 /// </summary> public class SymmetricMethod {    private SymmetricAlgorithm mobjCryptoService;  private string Key;  /// <summary>  /// 对称加密类的构造函数  /// </summary>  public SymmetricMethod()  {   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();  } }}  

上一篇:研究在美国财务会计准则下对软件成本的会计处理
下一篇:陈子昂的专栏

相关文章

相关评论