123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Security.Cryptography;
- using System.IO;
- namespace Welling_Motor_Debug_Tool
- {
- internal class aes
- {
- // 加密字符串并保存到文件
- public static void EncryptToFile(string plainText, string filePath, string key, string iv)
- {
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(key); // 密钥(必须是 16、24 或 32 字节)
- aesAlg.IV = Encoding.UTF8.GetBytes(iv); // 初始化向量(IV,必须是 16 字节)
- using (FileStream fsEncrypt = new FileStream(filePath, FileMode.Create))
- using (CryptoStream csEncrypt = new CryptoStream(fsEncrypt, aesAlg.CreateEncryptor(), CryptoStreamMode.Write))
- using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
- {
- swEncrypt.Write(plainText);
- }
- }
- }
- // 从加密文件解密刺符传
- public static string DecryptFromFile(string filePath, string key, string iv)
- {
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(key); // 密钥(必须是 16、24 或 32 字节)
- aesAlg.IV = Encoding.UTF8.GetBytes(iv); // 初始化向量(IV,必须是 16 字节)
- using (FileStream fsDecrypt = new FileStream(filePath, FileMode.Open))
- using (CryptoStream csDecrypt = new CryptoStream(fsDecrypt, aesAlg.CreateDecryptor(), CryptoStreamMode.Read))
- using (StreamReader srDecrypt = new StreamReader(csDecrypt))
- {
- return srDecrypt.ReadToEnd();
- }
- }
- }
- // 加密字符串
- public static string EncryptString(string plainText, string key, string iv)
- {
- byte[] array;
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(key); // 密钥(必须是 16、24 或 32 字节)
- aesAlg.IV = Encoding.UTF8.GetBytes(iv); // 初始化向量(IV,必须是 16 字节)
- ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
- using (MemoryStream memoryStream = new MemoryStream())
- {
- using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, encryptor, CryptoStreamMode.Write))
- {
- using (StreamWriter streamWriter = new StreamWriter((Stream)cryptoStream))
- {
- streamWriter.Write(plainText);
- }
- array = memoryStream.ToArray();
- }
- }
- }
- return Convert.ToBase64String(array);
- }
- public static string DecryptString(string cipherText, string key, string iv)
- {
- byte[] buffer = Convert.FromBase64String(cipherText);
- using (Aes aesAlg = Aes.Create())
- {
- aesAlg.Key = Encoding.UTF8.GetBytes(key); // 密钥(必须是 16、24 或 32 字节)
- aesAlg.IV = Encoding.UTF8.GetBytes(iv); // 初始化向量(IV,必须是 16 字节)
- ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
- using (MemoryStream memoryStream = new MemoryStream(buffer))
- {
- using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, decryptor, CryptoStreamMode.Read))
- {
- using (StreamReader streamReader = new StreamReader((Stream)cryptoStream))
- {
- return streamReader.ReadToEnd();
- }
- }
- }
- }
- }
- }
- }
|