using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class EncryptionExample
{
// 加密方法
public static string EncryptString(string plainText, string key)
{
using (Aes aesAlg = Aes.Create())
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
aesAlg.Key = keyBytes;
aesAlg.GenerateIV();
byte[] iv = aesAlg.IV;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
msEncrypt.Write(iv, 0, iv.Length);
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
// 解密方法
public static string DecryptString(string cipherText, string key)
{
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes aesAlg = Aes.Create())
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
aesAlg.Key = keyBytes;
byte[] iv = new byte[aesAlg.BlockSize / 8];
Array.Copy(cipherBytes, iv, iv.Length);
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(cipherBytes))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
// 测试加密解密功能
public static void Main()
{
string original = "Here is some data to encrypt!";
string key = "ThisIsASecretKey123";
// Encrypt the string.
string encrypted = EncryptString(original, key);
Console.WriteLine("Encrypted: {0}", encrypted);
// Decrypt the string.
string decrypted = DecryptString(encrypted, key);
Console.WriteLine("Decrypted: {0}", decrypted);
}
}
加密方法 EncryptString:
解密方法 DecryptString:
测试代码:
上一篇:c# 数组赋值
下一篇:c# list
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站