您的位置:首页 > 编程语言 > C#

C#中使用DES和AES加密解密

2014-09-09 10:04 579 查看
using System;

using System.Text;

using System.Security.Cryptography;

using System.IO;

namespace MyCryptography

{

///

/// DES加密解密

///

public class DES

{

///

/// 获取密钥

///

private static string Key

{

get { return @"P@+#wG+Z"; }

}

///

/// 获取向量

///

private static string IV

{

get { return @"L%n67}G/Mk@k%:~Y"; }

}

///

/// DES加密

///

/// 明文字符串

/// 密文

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;

}

///

/// DES解密

///

/// 密文字符串

/// 明文

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;

}

}

///

/// AES加密解密

///

public class AES

{

///

/// 获取密钥

///

private static string Key

{

get { return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M"; }

}

///

/// 获取向量

///

private static string IV

{

get { return @"L+/~f4,Ir)b$=pkf"; }

}

///

/// AES加密

///

/// 明文字符串

/// 密文

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;

}

///

/// AES加密

///

/// 明文字符串

/// 加密失败时是否返回 null,false 返回 String.Empty

/// 密文

public static string AESEncrypt(string plainStr, bool returnNull)

{

string encrypt = AESEncrypt(plainStr);

return returnNull ? encrypt : (encrypt == null ? String.Empty : encrypt);

}

///

/// AES解密

///

/// 密文字符串

/// 明文

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;

}

///

/// AES解密

///

/// 密文字符串

/// 解密失败时是否返回 null,false 返回 String.Empty

/// 明文

public static string AESDecrypt(string encryptStr, bool returnNull)

{

string decrypt = AESDecrypt(encryptStr);

return returnNull ? decrypt : (decrypt == null ? String.Empty : decrypt);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: