[转]C# 常用字符串加密解密方法
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Security;
namespace HuaTong.General.Utility
{
/// <summary>
/// 加密工具类
/// </summary>
public
class EncryptHelper
{
//默认密钥
private
static
string AESKey =
"[45/*YUIdse..e;]"
;
private
static
string DESKey =
"[&HdN72]"
;
/// <summary>
/// AES加密
/// </summary>
public
static
string AESEncrypt(string value, string _aeskey =
null
)
{
if (string.IsNullOrEmpty(_aeskey))
{
_aeskey = AESKey;
}
byte[] keyArray = Encoding.UTF8.GetBytes(_aeskey);
byte[] toEncryptArray = Encoding.UTF8.GetBytes(value);
RijndaelManaged rDel = new RijndaelManaged();
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>
/// AES解密
/// </summary>
public
static
string AESDecrypt(string value, string _aeskey =
null
)
{
try
{
if (string.IsNullOrEmpty(_aeskey))
{
_aeskey = AESKey;
}
byte[] keyArray = Encoding.UTF8.GetBytes(_aeskey);
byte[] toEncryptArray =
Convert
.FromBase64String(value);
RijndaelManaged rDel = new RijndaelManaged();
rDel.
Key
= keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return
Encoding.UTF8.GetString(resultArray);
}
catch
{
return
string.Empty;
}
}
/// <summary>
/// DES加密
/// </summary>
public
static
string DESEncrypt(string value, string _deskey =
null
)
{
if (string.IsNullOrEmpty(_deskey))
{
_deskey = DESKey;
}
byte[] keyArray = Encoding.UTF8.GetBytes(_deskey);
byte[] toEncryptArray = Encoding.UTF8.GetBytes(value);
DESCryptoServiceProvider rDel = new DESCryptoServiceProvider();
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>
/// DES解密
/// </summary>
public
static
string DESDecrypt(string value, string _deskey =
null
)
{
try
{
if (string.IsNullOrEmpty(_deskey))
{
_deskey = DESKey;
}
byte[] keyArray = Encoding.UTF8.GetBytes(_deskey);
byte[] toEncryptArray =
Convert
.FromBase64String(value);
DESCryptoServiceProvider rDel = new DESCryptoServiceProvider();
rDel.
Key
= keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return
Encoding.UTF8.GetString(resultArray);
}
catch
{
return
string.Empty;
}
}
public
static
string MD5(string value)
{
byte[] result = Encoding.UTF8.GetBytes(value);
MD5 md5 = new MD5CryptoServiceProvider();
byte[]
output
= md5.ComputeHash(result);
return
BitConverter.ToString(
output
).
Replace
(
"-"
,
""
);
}
public
static
string HMACMD5(string value, string hmacKey)
{
HMACSHA1 hmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(hmacKey));
byte[] result = System.Text.Encoding.UTF8.GetBytes(value);
byte[]
output
= hmacsha1.ComputeHash(result);
return
BitConverter.ToString(
output
).
Replace
(
"-"
,
""
);
}
/// <summary>
/// base64编码
/// </summary>
/// <
returns
></
returns
>
public
static
string Base64Encode(string value)
{
string result =
Convert
.ToBase64String(Encoding.
Default
.GetBytes(value));
return
result;
}
/// <summary>
/// base64解码
/// </summary>
/// <
returns
></
returns
>
public
static
string Base64Decode(string value)
{
string result = Encoding.
Default
.GetString(
Convert
.FromBase64String(value));
return
result;
}
}
}