当前位置: 代码迷 >> 综合 >> 网络安全(11)——加密算法(6)——DES(1)——AES(1)——C#中使用DES和AES加密解密
  详细解决方案

网络安全(11)——加密算法(6)——DES(1)——AES(1)——C#中使用DES和AES加密解密

热度:58   发布时间:2023-10-01 19:38:11.0
using System;
using System.Text;
using System.Security.Cryptography;
using System.IO;namespace MyCryptography
{/// <summary>/// DES加密解密/// </summary>public class DES{/// <summary>/// 获取密钥/// </summary>private static string Key{get { return @"P@+#wG+Z"; }}/// <summary>/// 获取向量/// </summary>private static string IV{get { return @"L%n67}G/Mk@k%:~Y"; }}/// <summary>/// DES加密/// </summary>/// <param name="plainStr">明文字符串</param>/// <returns>密文</returns>public static string DESEncrypt(string plainStr){byte[] bKey = Encoding.UTF8.GetBytes(Key);byte[] bIV = Encoding.UTF8.GetBytes(IV);byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);string encrypt = null;DESCryptoServiceProvider des = new DESCryptoServiceProvider();try{using (MemoryStream mStream = new MemoryStream()){using (CryptoStream cStream = new CryptoStream(mStream, des.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)){cStream.Write(byteArray, 0, byteArray.Length);cStream.FlushFinalBlock();encrypt = Convert.ToBase64String(mStream.ToArray());}}}catch { }des.Clear();return encrypt;}/// <summary>/// DES解密/// </summary>/// <param name="encryptStr">密文字符串</param>/// <returns>明文</returns>public static string DESDecrypt(string encryptStr){byte[] bKey = Encoding.UTF8.GetBytes(Key);byte[] bIV = Encoding.UTF8.GetBytes(IV);byte[] byteArray = Convert.FromBase64String(encryptStr);string decrypt = null;DESCryptoServiceProvider des = new DESCryptoServiceProvider();try{using (MemoryStream mStream = new MemoryStream()){using (CryptoStream cStream = new CryptoStream(mStream, des.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)){cStream.Write(byteArray, 0, byteArray.Length);cStream.FlushFinalBlock();decrypt = Encoding.UTF8.GetString(mStream.ToArray());}}}catch { }des.Clear();return decrypt;}}/// <summary>/// AES加密解密/// </summary>public class AES{/// <summary>/// 获取密钥/// </summary>private static string Key{get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }}/// <summary>/// 获取向量/// </summary>private static string IV{get { return @"L+/~f4,Ir)b$=pkf"; }}/// <summary>/// AES加密/// </summary>/// <param name="plainStr">明文字符串</param>/// <returns>密文</returns>public static string AESEncrypt(string plainStr){byte[] bKey = Encoding.UTF8.GetBytes(Key);byte[] bIV = Encoding.UTF8.GetBytes(IV);byte[] byteArray = Encoding.UTF8.GetBytes(plainStr);string encrypt = null;Rijndael aes = Rijndael.Create();try{using (MemoryStream mStream = new MemoryStream()){using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)){cStream.Write(byteArray, 0, byteArray.Length);cStream.FlushFinalBlock();encrypt = Convert.ToBase64String(mStream.ToArray());}}}catch { }aes.Clear();return encrypt;}/// <summary>/// AES加密/// </summary>/// <param name="plainStr">明文字符串</param>/// <param name="returnNull">加密失败时是否返回 null,false 返回 String.Empty</param>/// <returns>密文</returns>public static string AESEncrypt(string plainStr, bool returnNull){string encrypt = AESEncrypt(plainStr);return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);}/// <summary>/// AES解密/// </summary>/// <param name="encryptStr">密文字符串</param>/// <returns>明文</returns>public static string AESDecrypt(string encryptStr){byte[] bKey = Encoding.UTF8.GetBytes(Key);byte[] bIV = Encoding.UTF8.GetBytes(IV);byte[] byteArray = Convert.FromBase64String(encryptStr);string decrypt = null;Rijndael aes = Rijndael.Create();try{using (MemoryStream mStream = new MemoryStream()){using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bIV), CryptoStreamMode.Write)){cStream.Write(byteArray, 0, byteArray.Length);cStream.FlushFinalBlock();decrypt = Encoding.UTF8.GetString(mStream.ToArray());}}}catch { }aes.Clear();return decrypt;}/// <summary>/// AES解密/// </summary>/// <param name="encryptStr">密文字符串</param>/// <param name="returnNull">解密失败时是否返回 null,false 返回 String.Empty</param>/// <returns>明文</returns>public static string AESDecrypt(string encryptStr, bool returnNull){string decrypt = AESDecrypt(encryptStr);return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);}}
}

 

  相关解决方案