您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。