c# aes加密解密私钥公钥通钥

using System.Security.Cryptography;
using System.Text;

namespace EncryptTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");

           
            string 密= EncryptAESBASE64("你第三方第三方斯蒂芬 手打几号放假啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ****---#¥%…………&*(好", "666");
            Console.WriteLine(密);

            string 明文= DecryptAESBASE64(密, "666");
            Console.WriteLine(明文);

            明文 = DecryptAESBASE64(密, "私人的KEY_NAME");//公钥读取
            Console.WriteLine(明文);
        }
        public static byte[] CalculateMD5(string input)
        {
            MD5 md5 = MD5.Create();
            byte[] inputBytes = Encoding.UTF8.GetBytes(input);
            return md5.ComputeHash(inputBytes);
        }

        private static Dictionary<string, byte[]>? keys=new Dictionary<string, byte[]>();

        public static void AddKey(string keyName, byte[] key)
        {
            if (!keys.ContainsKey(keyName))
            {
                keys.Add(keyName, key);
            }
        }

        public static string EncryptAESBASE64(string clearText, string keyName)
        {
            AddKey("私人的KEY_NAME", CalculateMD5(keyName));
            if (!keys.ContainsKey(keyName))
            {
                //添加
                byte[] md5 = CalculateMD5(keyName);
                AddKey(keyName, md5);
            }

            //解密的时候,不能随便让用户添加
            if (keys.ContainsKey(keyName))
            {
                byte[] key = keys[keyName];
                using (Aes encryptor = Aes.Create())
                {
                    encryptor.Key = key;
                    encryptor.IV = new byte[16]; // Use proper IV generation
                    encryptor.Padding = PaddingMode.PKCS7; // Set padding mode

                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            byte[] clearBytes = Encoding.UTF8.GetBytes(clearText);
                            cs.Write(clearBytes, 0, clearBytes.Length);
                        }
                        return Convert.ToBase64String(ms.ToArray());
                    }
                }
            }
            else
            {
                return "读取失败502";
            }
        }

        public static string DecryptAESBASE64(string encryptedText, string keyName)
        {
            AddKey("私人的KEY_NAME", CalculateMD5(keyName));
            if (keys.ContainsKey(keyName))
            {
                byte[] key = keys[keyName];
                byte[] cipherBytes = Convert.FromBase64String(encryptedText);

                using (Aes encryptor = Aes.Create())
                {
                    encryptor.Key = key;
                    encryptor.IV = new byte[16]; // Use proper IV generation
                    encryptor.Padding = PaddingMode.PKCS7; // Set padding mode

                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(cipherBytes, 0, cipherBytes.Length);
                        }
                        return Encoding.UTF8.GetString(ms.ToArray());
                    }
                }
            }
            else
            {
                throw new ArgumentException("Key not found", nameof(keyName));
            }
        }

    }
}
 

点评:

这个代码需要提前添加       keys。

private static Dictionary<string, byte[]>? keys=new Dictionary<string, byte[]>();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcagy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值