C#:AES的加密解密,用于明文加密

news/2024/11/18 8:27:07/

大白话理解:将明眼能看到的字符给用另一种读不懂的语言给翻译,就像是摩斯密码……就像base64加密,都有异曲同工之妙。

建一个新的类(这里放了aes加密解密的方法)

public static class AesPassword{/// <summary>/// Aes加解密钥必须32位/// </summary>public static string AesKey = "mima"; // 密钥/// <summary>/// 获取Aes32位密钥/// </summary>/// <param name="key">Aes密钥字符串</param>/// <returns>Aes32位密钥</returns>public static byte[] GetAesKey(string key){if (string.IsNullOrEmpty(key)){throw new ArgumentNullException("key", "Aes密钥不能为空");}if (key.Length < 32){// 不足32补全key = key.PadRight(32, '0');}if (key.Length > 32){key = key.Substring(0, 32);}return Encoding.UTF8.GetBytes(key);}///  AES 加密/// </summary>/// <param name="str">明文(待加密)</param>/// <param name="key">密文</param>/// <returns></returns>public static string AesEncrypt(string str, string key){if (string.IsNullOrEmpty(str))return null;Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);RijndaelManaged rm = new RijndaelManaged{Key = GetAesKey(key),Mode = CipherMode.ECB,Padding = PaddingMode.PKCS7};ICryptoTransform cTransform = rm.CreateEncryptor();Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);}/// <summary>///  AES 解密/// </summary>/// <param name="str">明文(待解密)</param>/// <param name="key">密文</param>/// <returns></returns>public static string AesDecrypt(string str, string key){if (string.IsNullOrEmpty(str))return null;Byte[] toEncryptArray = Convert.FromBase64String(str);RijndaelManaged rm = new RijndaelManaged{Key = GetAesKey(key),Mode = CipherMode.ECB,Padding = PaddingMode.PKCS7};ICryptoTransform cTransform = rm.CreateDecryptor();Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Encoding.UTF8.GetString(resultArray);}
/// <summary>
/// Aes加密
/// </summary>
/// <param name="source">源字符串</param>
/// <param name="key">aes密钥,长度必须32位</param>
/// <returns>加密后的字符串</returns>
public static string EncryptAes(string source, string key){using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()){aesProvider.Key = GetAesKey(key);aesProvider.Mode = CipherMode.ECB;aesProvider.Padding = PaddingMode.PKCS7;using (ICryptoTransform cryptoTransform = aesProvider.CreateEncryptor()){byte[] inputBuffers = Encoding.UTF8.GetBytes(source);byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);aesProvider.Clear();aesProvider.Dispose();return Convert.ToBase64String(results, 0, results.Length);}}}/// <summary>/// Aes解密/// </summary>/// <param name="source">源字符串</param>/// <param name="key">aes密钥,长度必须32位</param>/// <returns>解密后的字符串</returns>public static string DecryptAes(string source, string key){using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()){aesProvider.Key = GetAesKey(key);aesProvider.Mode = CipherMode.ECB;aesProvider.Padding = PaddingMode.PKCS7;using (ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor()){byte[] inputBuffers = Convert.FromBase64String(source);byte[] results = cryptoTransform.TransformFinalBlock(inputBuffers, 0, inputBuffers.Length);aesProvider.Clear();return Encoding.UTF8.GetString(results);}}}}

需要调用的文件

public static void SwitchPassword() {string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"config/config.json");//加密//string apn = AesPassword.AesEncrypt("LTAI****LyZ7q9", AesPassword.AesKey);var patternJson = JsonConvert.DeserializeObject<ConfigModel>(File.ReadAllText(path));//解密var _accesskey = AesPassword.AesDecrypt(patternJson.accesskey, AesPassword.AesKey);var _secretkey = AesPassword.AesDecrypt(patternJson.secretkey, AesPassword.AesKey);ConfigIni.AccessKey = _accesskey;ConfigIni.SecretKey = _secretkey;}   public class ConfigModel{public string accesskey { get; set; }public string secretkey { get; set; }}

在这里插入图片描述
在这里插入图片描述

验证

在这里插入图片描述


http://www.ppmy.cn/news/744376.html

相关文章

Qt源码分析--QAbstractSocket类

QAbstractSocket类的头文件通常包含了一些重要的成员函数、信号和槽以及一些常量定义。 成员函数:connectToHost():用于与指定的主机和端口建立连接。writeData():向套接字写入数据。readData():从套接字读取数据。disconnectFromHost():关闭套接字连接。error():返回套接…

苹果手机向windows电脑传照片和视频 无法链接设备或连接到系统上的设备没有发挥作用解决方法

错误原因&#xff1a;iphone的视频压缩功能 解决方法&#xff1a;更改iphone的设置 设置-照片-传输到MAC或PC 将其更改为 “保留原始照片”

JavaScript实现点击复制功能兼容IOS系统 苹果手机 微信 浏览器

我是Django后端&#xff0c;当然平时也有一些使用前端的需要&#xff0c;事情是这样的&#xff1a; 需要完成一个前端点击复制的功能&#xff0c;适应Android手机微信浏览器、IOS系统苹果手机微信浏览器、电脑。 首先&#xff0c;需要一个js文件&#xff1a; clipboard.min.js …

android怎么备份到苹果,安卓手机数据怎么导入苹果手机?

原标题&#xff1a;安卓手机数据怎么导入苹果手机&#xff1f; 现如今&#xff0c;安卓系统的手机和苹果ios系统的手机都有自己的粉丝阵营&#xff0c;不过两家粉丝也经常相互交流、互相“跳墙”&#xff0c;所以便有很多安卓手机用户在购买新手机时选择了苹果手机&#xff0c;…

苹果手机 生成html文件,苹果手机这个功能太厉害了,1秒就能将纸质文档转换为Word...

很多人都会选择苹果手机&#xff0c;如果你只会用来打游戏&#xff0c;那就太浪费了&#xff0c;在苹果手机上有一个非常厉害的功能&#xff0c;可以将纸质文档转换为Word&#xff0c;下面一起来看看吧。 一、提取电子文档 1、苹果手机上都会自带一个【备忘录】&#xff0c;手指…

ios 短信验证码自动填充时总是被复制两遍

今天和测试battle了一天&#xff0c;发现的&#xff0c;一直以为是操作问题 某些app或者微信网页里&#xff0c;复制手机收到的短信验证码&#xff0c;会触发UITextFieldTextDidChangeNotification监听事件&#xff0c;导致验证码出现了两次&#xff0c;这个应该是ios系统内部…

Pinia 数据持久化储存(pinia-plugin-persistedstate),简单入门使用(有手就行系列)

1.安装依赖npm install pinia-plugin-persistedstate 2.在main.js导入 import piniaPluginPersistedstate from pinia-plugin-persistedstate; app.use(createPinia().use(piniaPluginPersistedstate)) 完整代码参考 import { createApp } from vue import { createPinia }…

解决微信浏览器苹果手机复制的时候连旁边的也复制的办法

<p class"fl"><span class"num">dgfdgfh</span><span>长按复制</span></p><div class"fr">点击兑换</div>在iphone手机上点击class是num这个类的时候会连旁边的 div和长按复制也一起选择&#…