摘要:usingSystem;usingSystem.IO;usingSystem.Security.Cryptography;usingSystem.Text;usingSystem.Web.Security;namespaceCommon.Utility{//////Author:Kt///DateCreated:2011-04-01///Description:加密对象-工具类/
usingSystem;
usingSystem.IO;
usingSystem.Security.Cryptography;
usingSystem.Text;
usingSystem.Web.Security;
namespaceCommon.Utility
{
/// <summary>
///Author:Kt
///Date Created:2011-04-01
///Description:加密对象-工具类
/// </summary>
public classEncryptHelper
{
/// <summary>
///AES 解密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
/// <returns></returns>
public static string AESDecrypt(string content, stringsecretKey)
{
if (string.IsNullOrEmpty(content)) return null;
Byte[] toEncryptArray =Convert.FromBase64String(content);
System.Security.Cryptography.RijndaelManaged rm = newSystem.Security.Cryptography.RijndaelManaged
{
Key =Encoding.UTF8.GetBytes(secretKey),
Mode =System.Security.Cryptography.CipherMode.ECB,
Padding =System.Security.Cryptography.PaddingMode.PKCS7
};
System.Security.Cryptography.ICryptoTransform cTransform =rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
returnEncoding.UTF8.GetString(resultArray);
}
/// <summary>
///AES 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥(长度: 16、24、32字节)</param>
/// <returns></returns>
public static string AESEncrypt(string content, stringsecretKey)
{
byte[] keyArray =UTF8Encoding.UTF8.GetBytes(secretKey);
byte[] toEncryptArray =UTF8Encoding.UTF8.GetBytes(content);
RijndaelManaged rDel = newRijndaelManaged();
rDel.Key =keyArray;
rDel.Mode =CipherMode.ECB;
rDel.Padding =PaddingMode.PKCS7;
ICryptoTransform cTransform =rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
/// <summary>
///MD5 加密
/// </summary>
/// <param name="content">内容</param>
/// <returns></returns>
public static string Md5(stringcontent)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(content, "MD5");
}
/// <summary>
///MD5 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="encode">编码</param>
/// <returns>签名字符串</returns>
public static string Md5(stringcontent, Encoding encode)
{
var result = newStringBuilder();
var md5 = newMD5CryptoServiceProvider();
var bytes =md5.ComputeHash(encode.GetBytes(content));
foreach (var item inbytes)
result.Append(item.ToString("x").PadLeft(2, '0'));
returnresult.ToString();
}
/// <summary>
///3DES 解密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥</param>
/// <param name="ivs">向量</param>
/// <returns></returns>
public static string DESDecrypt(string content, string secretKey, stringivs)
{
SymmetricAlgorithm mCSP = newTripleDESCryptoServiceProvider();
mCSP.Mode =CipherMode.CBC;
mCSP.Padding =PaddingMode.PKCS7;
mCSP.Key =Encoding.UTF8.GetBytes(secretKey);
mCSP.IV =Encoding.UTF8.GetBytes(ivs);
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct =mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);
byt =Convert.FromBase64String(content);
ms = newMemoryStream();
cs = newCryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
returnEncoding.UTF8.GetString(ms.ToArray());
}
/// <summary>
///3DES 加密
/// </summary>
/// <param name="content">内容</param>
/// <param name="secretKey">私钥</param>
/// <param name="ivs">向量</param>
/// <returns></returns>
public static string DESEncrypt(string content, string secretKey, stringivs)
{
SymmetricAlgorithm mCSP = newTripleDESCryptoServiceProvider();
mCSP.Mode =CipherMode.CBC;
mCSP.Padding =PaddingMode.PKCS7;
mCSP.Key =Encoding.UTF8.GetBytes(secretKey);
mCSP.IV =Encoding.UTF8.GetBytes(ivs);
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
ct =mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);
byt =Encoding.UTF8.GetBytes(content);
ms = newMemoryStream();
cs = newCryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
returnConvert.ToBase64String(ms.ToArray());
}
}
}
usingSystem;
usingSystem.Text;
namespaceCommon.Utility.Tests
{
/// <summary>
///运行示例
/// </summary>
internal partial classProgram
{
private static void Main_EncryptHelper(string[] args)
{
string str = "需要加密的字符串12345678";
string md5_1 =EncryptHelper.Md5(str);
string md5_2 =EncryptHelper.Md5(str, Encoding.UTF8);
str = "10086";
string secretKey_AES = Guid.NewGuid().ToString("N");
string JiaMi =EncryptHelper.AESEncrypt(str, secretKey_AES);
string JieMi =EncryptHelper.AESDecrypt(JiaMi, secretKey_AES);
string secretKey_DES = "fsT7ObM1nEnrRAGO1djI2YBi";
string ivs_DES = "GUGlYE1g";
JiaMi =EncryptHelper.DESEncrypt(str, secretKey_DES, ivs_DES);
JieMi =EncryptHelper.DESDecrypt(JiaMi, secretKey_DES, ivs_DES);
}
}
}