using System;
using System.Security.Cryptography;
using System.Text;
public class HelloWorld
{
public static void Main()
{
var content ="xxxx";
var key ="2e88a49060214662a82ddec1853b09fb";
var iv ="nkkdChlREsaCQK2W";
var hexEncryptValue = EncryptionHelper.AesEncryptCBCHex(content, key, iv);
var kems="xxxxx";
var hexEncryptValue1 = EncryptionHelper.AesDecryptCBCHex(kems, key, iv);
Console.WriteLine(hexEncryptValue1);
}
public static class EncryptionHelper
{
public static string AesEncryptCBCHex(string content, string key, string iv)
{
byte[] keyArray = Encoding.UTF8.GetBytes(key);
byte[] ivArray = Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = Encoding.UTF8.GetBytes(content);
using (var aes = Aes.Create())
{
aes.Key = keyArray;
aes.IV = ivArray;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
var cTransform = aes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return ToHexString(resultArray);
}
}
public static string AesDecryptCBCHex(string encryptedHex, string key, string iv)
{
byte[] keyArray = Encoding.UTF8.GetBytes(key);
byte[] ivArray = Encoding.UTF8.GetBytes(iv);
byte[] toEncryptArray = ConvertHexStringToBytes(encryptedHex);
using (var aes = Aes.Create())
{
aes.Key = keyArray;
aes.IV = ivArray;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
var cTransform = aes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
}
public static string ToHexString(byte[] bytes)
{
string hexString = string.Empty;
if (bytes != null)
{
StringBuilder strB = new StringBuilder();
for (int i = 0; i < bytes.Length; i++)
{
strB.Append(bytes[i].ToString("x2"));
}
hexString = strB.ToString();
}
return hexString;
}
public static byte[] ConvertHexStringToBytes(string hexString)
{
hexString = hexString.Trim();
if (hexString.Length % 2 != 0)
{
throw new ArgumentException("参数长度不正确");
}
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
}
}