本文实例讲述了C#使用DES和AES实现加密解密功能。分享给大家供大家参考,具体如下:
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);
}
}
}
希望本文所述对大家C#程序设计有所帮助。
dy("nrwz");
查看更多关于C#使用DES和AES实现加密解密功能示例的详细内容...