using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
namespace AESUtil
{
class Program
{
static void Main(string[] args)
{
String encryptData = Program.Encrypt("text string", "7165B68B6ACB4B33");
Console.WriteLine(encryptData);
String decryptData = Program.Decrypt(encryptData, "7165B68B6ACB4B33");
Console.WriteLine(decryptData);
Console.Read();
}
/*
AES加密
*/
public static string Encrypt(string toEncrypt, string key)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
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 parseByte2HexStr(resultArray);
}
/*
AES解密
*/
public static string Decrypt(string toDecrypt, string key)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
byte[] toEncryptArray = parseHexStr2Byte(toDecrypt);
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 UTF8Encoding.UTF8.GetString(resultArray);
}
/**
* byte[]->hex
*
* @param args
* @throws Exception
*/
public static string parseByte2HexStr(byte[] buf)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < buf.Length; i++)
{
string hex = string.Format("{0:X}", buf[i] & 0xFF);
if (hex.Length == 1)
{
hex = '0' + hex;
}
sb.Append(hex.ToUpper());
}
return sb.ToString();
}
/**
* hex->byte[]
*
* @param args
* @throws Exception
*/
public static byte[] parseHexStr2Byte(string hexStr)
{
if (hexStr.Length < 1)
return null;
byte[] result = new byte[hexStr.Length / 2];
for (int i = 0; i < hexStr.Length / 2; i++)
{
long high = Convert.ToInt64(hexStr.Substring(i * 2, 1), 16);
long low = Convert.ToInt64(hexStr.Substring(i * 2 + 1, 1), 16);
result[i] = (byte)(high * 16 + low);
}
return result;
}
}
}