C#字符串加密解密方法实例
背景
在对程序进行开发时,有时候需要对一些敏感数据进行加密,以保证数据安全。在C#中,有许多方法来实现字符串的加密解密。
对称加密
对称加密是最常用的一种加密方式,加密和解密使用相同的密钥。常见的对称加密算法有DES、AES和IDEA等。
加密方法示例
下面是一段使用AES加密算法对明文进行加密的示例代码:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public static string AESEncrypt(string plainText, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
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);
}
}
byte[] encrypted = ms.ToArray();
return Convert.ToBase64String(encrypted);
}
}
}
解密方法示例
下面是一段使用AES解密算法对密文进行解密的示例代码:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public static string AESDecrypt(string encryptedText, byte[] key, byte[] iv)
{
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(encryptedText)))
{
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (StreamReader sr = new StreamReader(cs))
{
return sr.ReadToEnd();
}
}
}
}
}
非对称加密
非对称加密是一种最常用的公钥加密方式,也称为公钥密码学,加密和解密使用不同的密钥。常见的非对称加密算法有RSA、DSA和ECC等。
加密方法示例
下面是一段使用RSA算法对明文进行加密的示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
public static string RSAEncrypt(string plainText, string publicKeyXml)
{
using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
{
provider.FromXmlString(publicKeyXml);
byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);
byte[] encryptedBytes = provider.Encrypt(plainBytes, false);
return Convert.ToBase64String(encryptedBytes);
}
}
解密方法示例
下面是一段使用RSA算法对密文进行解密的示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
public static string RSADecrypt(string encryptedText, string privateKeyXml)
{
using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
{
provider.FromXmlString(privateKeyXml);
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
byte[] decryptedBytes = provider.Decrypt(encryptedBytes, false);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
总结
以上就是C#字符串加密解密的两种常见方式,具体使用哪种方式根据需求和实际情况来决定。在实际开发时,还需要注意保护密钥和加密算法的安全性,以免被攻击者利用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#字符串加密解密方法实例 - Python技术站