AES加密解密C#代码

AES加密解密C#代码,第1张

概述AES加密解密C#代码

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

    using System;      using System.Collections.Generic;      using System.linq;      using System.Text;      using System.Security.Cryptography;      using System.IO;                  namespace AESDemo      {          public static class AESHelper          {              /// <summary>              /// AES加密              /// </summary>              /// <param name="Data">被加密的明文</param>              /// <param name="Key">密钥</param>              /// <param name="Vector">向量</param>              /// <returns>密文</returns>              public static Byte[] AESEncrypt(Byte[] Data,String Key,String Vector)              {                  Byte[] bKey = new Byte[32];                  Array.copy(EnCoding.UTF8.GetBytes(Key.padright(bKey.Length)),bKey,bKey.Length);                  Byte[] bVector = new Byte[16];                  Array.copy(EnCoding.UTF8.GetBytes(Vector.padright(bVector.Length)),bVector,bVector.Length);                              Byte[] Cryptograph = null; // 加密后的密文                              Rijndael Aes = Rijndael.Create();                  try                  {                      // 开辟一块内存流                      using (MemoryStream Memory = new MemoryStream())                      {                          // 把内存流对象包装成加密流对象                          using (CryptoStream Encryptor = new CryptoStream(Memory,Aes.CreateEncryptor(bKey,bVector),CryptoStreamMode.Write))                          {                              // 明文数据写入加密流                              Encryptor.Write(Data,Data.Length);                              Encryptor.FlushFinalBlock();                                          Cryptograph = Memory.ToArray();                          }                      }                  }                  catch                  {                      Cryptograph = null;                  }                              return Cryptograph;              }                          /// <summary>              /// AES解密              /// </summary>              /// <param name="Data">被解密的密文</param>              /// <param name="Key">密钥</param>              /// <param name="Vector">向量</param>              /// <returns>明文</returns>              public static Byte[] AESDecrypt(Byte[] Data,bVector.Length);                              Byte[] original = null; // 解密后的明文                              Rijndael Aes = Rijndael.Create();                  try                  {                      // 开辟一块内存流,存储密文                      using (MemoryStream Memory = new MemoryStream(Data))                      {                          // 把内存流对象包装成加密流对象                          using (CryptoStream Decryptor = new CryptoStream(Memory,Aes.CreateDecryptor(bKey,CryptoStreamMode.Read))                          {                              // 明文存储区                              using (MemoryStream originalMemory = new MemoryStream())                              {                                  Byte[] Buffer = new Byte[1024];                                  Int32 readBytes = 0;                                  while ((readBytes = Decryptor.Read(Buffer,Buffer.Length)) > 0)                                  {                                      originalMemory.Write(Buffer,readBytes);                                  }                                              original = originalMemory.ToArray();                              }                          }                      }                  }                  catch                  {                      original = null;                  }                              return original;              }          }      }                  不使用向量的方式:      public static class AESCrypto          {      /// <summary>      /// IV向量为固定值      /// </summary>              //private static byte[] _iV = {              //    85,60,12,116,//    99,189,173,19,//    138,183,232,248,//    82,200,242              //};                          public static byte[] Decrypt(byte[] encryptedBytes,byte[] key)              {      MemoryStream mStream = new MemoryStream( encryptedBytes );      //mStream.Write( encryptedBytes,encryptedBytes.Length );      //mStream.Seek( 0,SeekOrigin.Begin );      RijndaelManaged aes = new RijndaelManaged( );                  aes.Mode = CipherMode.ECB;                  aes.padding = paddingMode.PKCS7;                  aes.KeySize = 128;      aes.Key = key;      //aes.IV = _iV;      CryptoStream cryptoStream = new CryptoStream( mStream,aes.CreateDecryptor( ),CryptoStreamMode.Read );      try {                  byte[] tmp = new byte[ encryptedBytes.Length + 32 ];      int len = cryptoStream.Read( tmp,encryptedBytes.Length + 32 );      byte[] ret = new byte[ len ];      Array.copy( tmp,ret,len );      return ret;      }      finally {      cryptoStream.Close( );      mStream.Close( );      aes.Clear( );      }      }                          public static byte[] Encrypt(byte[] plainBytes,byte[] key)              {                  MemoryStream mStream = new MemoryStream();                  RijndaelManaged aes = new RijndaelManaged();                              aes.Mode = CipherMode.ECB;                  aes.padding = paddingMode.PKCS7;                  aes.KeySize = 128;                  //aes.Key = _key;                              aes.Key = key;                  //aes.IV = _iV;                  CryptoStream cryptoStream = new CryptoStream(mStream,aes.CreateEncryptor(),CryptoStreamMode.Write);                  try                  {                      cryptoStream.Write(plainBytes,plainBytes.Length);                      cryptoStream.FlushFinalBlock();                      return mStream.ToArray();                  }                  finally                  {                      cryptoStream.Close();                      mStream.Close();                      aes.Clear();                  }              }          }  

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的AES加密解密C#代码全部内容,希望文章能够帮你解决AES加密解密C#代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1237634.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存