C#的加密与解密
C#提供了多种加密与解密方式,常见的有对称加密、非对称加密和哈希算法。
对称加密
对称加密即使用相同的密钥进行加密和解密。常见的对称加密算法有DES、AES等。
示例代码:
using System.Security.Cryptography;
using System.Text;
public static string Encrypt(string plaintext, string key)
{
byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.Mode = CipherMode.ECB;
using (ICryptoTransform encryptor = aes.CreateEncryptor())
{
byte[] encryptedBytes = encryptor.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length);
return Convert.ToBase64String(encryptedBytes);
}
}
}
public static string Decrypt(string ciphertext, string key)
{
byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using (Aes aes = Aes.Create())
{
aes.Key = keyBytes;
aes.Mode = CipherMode.ECB;
using (ICryptoTransform decryptor = aes.CreateDecryptor())
{
byte[] decryptedBytes = decryptor.TransformFinalBlock(ciphertextBytes, 0, ciphertextBytes.Length);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
}
非对称加密
非对称加密算法使用公钥加密,私钥解密。常见的非对称加密算法有RSA、DSA等。
示例代码:
using System.Security.Cryptography;
using System.Text;
public static string Encrypt(string plaintext, RSAParameters publicKey)
{
byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(publicKey);
byte[] encryptedBytes = rsa.Encrypt(plaintextBytes, true);
return Convert.ToBase64String(encryptedBytes);
}
}
public static string Decrypt(string ciphertext, RSAParameters privateKey)
{
byte[] ciphertextBytes = Convert.FromBase64String(ciphertext);
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.ImportParameters(privateKey);
byte[] decryptedBytes = rsa.Decrypt(ciphertextBytes, true);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
哈希算法
哈希算法将任意长度的消息压缩到固定长度的摘要中,常见的哈希算法有MD5、SHA1、SHA256、SHA512等。
示例代码:
using System.Security.Cryptography;
using System.Text;
public static string ComputeHash(string plaintext, HashAlgorithm algorithm)
{
byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
byte[] hashBytes = algorithm.ComputeHash(plaintextBytes);
return Convert.ToBase64String(hashBytes);
}
以上是常见的加密与解密方式的示例代码,同时也是标准的Markdown格式文本,包含了标题、代码块等内容。实际使用时,根据具体需求选择相应的算法和实现方式,确保数据的安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#的加密与解密 - Python技术站