在 开发过程中,加密是一个常见的需求,数字签名和验证、网络通信安全、数据加密解密、用于保护数据的安全性和隐私。如几种常用的加密技术AES、SSL/TLS、RSA、HMAC 、SHA等,都是我们开发过程中常用到的加密方式,只不过每一个加密方式都有自己的特长。
下面就逐个讲一下
1. AES (Advanced Encryption Standard)
AES 是一种对称加密算法,广泛用于数据加密和解密。在 C# 中,可以使用 System.Security.Cryptography.Aes
类来实现 AES 加密和解密。
示例代码
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class AesEncryption
{
public static byte[] EncryptStringToBytes_Aes(string plainText, byte[] key, byte[] iv)
{
//创建加密器 encryptor
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
//创建加密器 encryptor
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
//使用 MemoryStream 和 CryptoStream 进行加密操作。
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
//将明文写入 StreamWriter,并通过 CryptoStream 进行加密。
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
}
return msEncrypt.ToArray();
}
}
}
///cipherText: 需要解密的密文字节数组。
///key: 解密密钥。
///iv: 初始化向量(IV)。
public static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] key, byte[] iv)
{
//• 使用 Aes.Create() 创建一个 AES 对象。
using (Aes aesAlg = Aes.Create())
{
//设置 AES 对象的密钥和初始化向量
aesAlg.Key = key;
aesAlg.IV = iv;
//创建解密器 decryptor。
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, a