📅  最后修改于: 2023-12-03 14:40:51.940000             🧑  作者: Mango
在现代的应用程序中,数据的安全性是非常重要的。加密和解密数据是保护数据不被未经授权的访问的一种方法。在这篇文章中,我们将讨论如何在 .NET Core 应用程序中进行加密和解密操作。
在进行加密和解密操作之前,我们需要选择合适的算法。 .NET Core 提供了很多加密和解密算法,包括:
AES
、DES
和 3DES
RSA
和 DSA
MD5
、SHA1
、SHA256
、SHA384
和 SHA512
这些算法都有各自的特点和适用场景。在选择算法时,我们需要考虑以下因素:
对称加密算法使用相同的密钥进行加密和解密。其中最常用的算法是 AES
。下面给出一个使用 AES
算法进行加密和解密的示例代码。
using System;
using System.Security.Cryptography;
using System.Text;
public static string EncryptString(string plainText, byte[] key, byte[] iv)
{
byte[] encrypted;
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
using (var ms = new System.IO.MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (var sw = new System.IO.StreamWriter(cs))
{
sw.Write(plainText);
}
encrypted = ms.ToArray();
}
}
}
return Convert.ToBase64String(encrypted);
}
public static string DecryptString(string cipherText, byte[] key, byte[] iv)
{
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (var ms = new System.IO.MemoryStream(cipherBytes))
{
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (var sr = new System.IO.StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
非对称加密算法使用公钥进行加密和私钥进行解密,或者使用私钥进行签名和公钥进行验证。其中最常用的算法是 RSA
。下面给出一个使用 RSA
算法进行加密和解密的示例代码。
public static string EncryptString(string plainText, string publicKey)
{
byte[] encryptedBytes;
using (var rsa = RSA.Create())
{
rsa.FromXmlString(publicKey);
encryptedBytes = rsa.Encrypt(Encoding.UTF8.GetBytes(plainText), RSAEncryptionPadding.OaepSHA256);
}
return Convert.ToBase64String(encryptedBytes);
}
public static string DecryptString(string cipherText, string privateKey)
{
byte[] cipherBytes = Convert.FromBase64String(cipherText);
using (var rsa = RSA.Create())
{
rsa.FromXmlString(privateKey);
byte[] decryptedBytes = rsa.Decrypt(cipherBytes, RSAEncryptionPadding.OaepSHA256);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
哈希算法将任意长度的数据转换为固定长度的数据。其中最常用的算法是 SHA256
。下面给出一个使用 SHA256
算法进行哈希的示例代码。
public static string GetHash(string input)
{
using (var sha256 = SHA256.Create())
{
byte[] bytes = Encoding.UTF8.GetBytes(input);
byte[] hash = sha256.ComputeHash(bytes);
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}
}
加密和解密数据是保护数据不被未经授权的访问的一种方法。在 .NET Core 应用程序中,我们可以使用对称加密算法 AES
、DES
和 3DES
,非对称加密算法 RSA
和 DSA
,以及哈希算法 MD5
、SHA1
、SHA256
、SHA384
和 SHA512
来进行加密和解密操作。在选择算法时,我们需要考虑加密后的数据大小、加密速度和安全性等因素。