由于最近在项目中用到,之前在网上找了好多,来来回回,终于整出来了。 贴出来以后用起来方便
C#
[csharp] view plaincopyprint?
#region AES加解密
///
///AES加密(加密步骤)///1,加密字符串得到2进制数组;///2,将2禁止数组转为16进制;///3,进行base64编码///
/// 要加密的字符串
/// 密钥
publicString Encrypt(String toEncrypt, String key)
{
Byte[] _Key=Encoding.ASCII.GetBytes(key);
Byte[] _Source=Encoding.UTF8.GetBytes(toEncrypt);
Aes aes= Aes.Create("AES");
aes.Mode=CipherMode.ECB;
aes.Padding=PaddingMode.PKCS7;
aes.Key=_Key;
ICryptoTransform cTransform=aes.CreateEncryptor();
Byte[] cryptData= cTransform.TransformFinalBlock(_Source, 0, _Source.Length);
String HexCryptString=Hex_2To16(cryptData);
Byte[] HexCryptData=Encoding.UTF8.GetBytes(HexCryptString);
String CryptString=Convert.ToBase64String(HexCryptData);returnCryptString;
}///
///AES解密(解密步骤)///1,将BASE64字符串转为16进制数组///2,将16进制数组转为字符串///3,将字符串转为2进制数据///4,用AES解密数据///
/// 已加密的内容
/// 密钥
public String Decrypt(string encryptedSource, stringkey)
{
Byte[] _Key=Encoding.ASCII.GetBytes(key);
Aes aes= Aes.Create("AES");
aes.Mode=CipherMode.ECB;
aes.Padding=PaddingMode.PKCS7;
aes.Key=_Key;
ICryptoTransform cTransform=aes.CreateDecryptor();
Byte[] encryptedData=Convert.FromBase64String(encryptedSource);
String encryptedString=Encoding.UTF8.GetString(encryptedData);
Byte[] _Source=Hex_16To2(encryptedString);
Byte[] originalSrouceData= cTransform.TransformFinalBlock(_Source, 0, _Source.Length);
String originalString=Encoding.UTF8.GetString(originalSrouceData);returnoriginalString;
}///
///2进制转16进制///
String Hex_2To16(Byte[] bytes)
{
String hexString=String.Empty;
Int32 iLength= 65535;if (bytes != null)
{
StringBuilder strB= newStringBuilder();if (bytes.Length
{
iLength=bytes.Length;
}for (int i = 0; i < iLength; i++)