编辑代码

using System;
 
using System.Security.Cryptography;
using System.Text;
public class HelloWorld
{
    public static void Main()
    {
      var content ="xxxx";//加密明文
        var key ="2e88a49060214662a82ddec1853b09fb";//key 这个是示例 
        var iv ="nkkdChlREsaCQK2W";//client_Id 这个是示例
        var hexEncryptValue = EncryptionHelper.AesEncryptCBCHex(content, key, iv);

var kems="xxxxx";

        var hexEncryptValue1 = EncryptionHelper.AesDecryptCBCHex(kems, key, iv);

        //
        Console.WriteLine(hexEncryptValue1);
    }
    
public static class EncryptionHelper
{
    /// <summary>
    /// 使用AES-256-CBC加密
    /// </summary>
    /// <param name="content">明文</param>
    /// <param name="key">密钥</param>
    /// <param name="iv">偏移量</param>
    /// <returns></returns>
    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);
        }
    }

    /// <summary>
    /// 使用AES-256-CBC解密
    /// </summary>
    /// <param name="encryptedHex">密文</param>
    /// <param name="key">密钥</param>
    /// <param name="iv">偏移量</param>
    /// <returns></returns>
    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);
        }
    }

    /// <summary>
    /// 字节转hex
    /// </summary>
    /// <param name="bytes"></param>
    /// <returns></returns>
    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;
    }

    /// <summary>
    /// 16进制原码字符串转字节数组
    /// </summary>
    /// <param name="hexString"></param>
    /// <returns></returns>
    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;
    }
}
}