您好,登錄后才能下訂單哦!
在C# Web API中,對數據進行加密可以通過多種方式實現,包括對稱加密、非對稱加密和哈希算法等。以下是一些常見的數據加密方法:
對稱加密使用相同的密鑰進行加密和解密。常用的對稱加密算法包括AES(高級加密標準)和DES(數據加密標準)。
using System.Security.Cryptography;
using System.Text;
public static string Encrypt(string plainText, string key)
{
byte[] iv = new byte[16];
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = iv;
using (ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV))
{
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plainText);
}
cs.Close();
}
iv = ms.ToArray();
}
}
}
return Convert.ToBase64String(iv) + ":" + Convert.ToBase64String(ms.ToArray());
}
public static string Decrypt(string cipherText, string key)
{
string[] parts = cipherText.Split(':');
byte[] iv = Convert.FromBase64String(parts[0]);
byte[] cipherBytes = Convert.FromBase64String(parts[1]);
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = iv;
using (ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV))
{
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
using (StreamReader sr = new StreamReader(cs))
{
sr.ReadToEnd();
}
cs.Close();
}
cipherBytes = ms.ToArray();
}
}
}
return Encoding.UTF8.GetString(cipherBytes);
}
非對稱加密使用一對密鑰(公鑰和私鑰)進行加密和解密。常用的非對稱加密算法包括RSA和ECC(橢圓曲線加密)。
using System.Security.Cryptography;
using System.Text;
public static string Encrypt(string plainText, RSA rsa)
{
byte[] data = Encoding.UTF8.GetBytes(plainText);
byte[] encryptedData = rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
return Convert.ToBase64String(encryptedData);
}
public static string Decrypt(string cipherText, RSA rsa)
{
byte[] encryptedData = Convert.FromBase64String(cipherText);
byte[] decryptedData = rsa.Decrypt(encryptedData, RSAEncryptionPadding.Pkcs1);
return Encoding.UTF8.GetString(decryptedData);
}
哈希算法用于生成數據的固定長度的摘要,常用于驗證數據的完整性。常用的哈希算法包括SHA-256和SHA-512。
using System.Security.Cryptography;
using System.Text;
public static string Hash(string plainText)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] data = sha256.ComputeHash(Encoding.UTF8.GetBytes(plainText));
return BitConverter.ToString(data).Replace("-", "").ToLower();
}
}
在Web API中,可以使用上述加密方法對數據進行加密,并將加密后的數據作為響應返回。客戶端在接收數據后,可以使用相應的解密方法進行解密。
[ApiController]
[Route("api/[controller]")]
public class DataController : ControllerBase
{
[HttpGet("encrypt")]
public IActionResult EncryptData()
{
string plainText = "Sensitive data";
string key = "YourEncryptionKey";
string encryptedText = Encrypt(plainText, key);
return Ok(encryptedText);
}
}
[ApiController]
[Route("api/[controller]")]
public class DataController : ControllerBase
{
[HttpPost("decrypt")]
public IActionResult DecryptData([FromBody] string encryptedText)
{
string key = "YourEncryptionKey";
string decryptedText = Decrypt(encryptedText, key);
return Ok(decryptedText);
}
}
通過上述方法,可以在C# Web API中對數據進行有效的加密和保護。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。