C#对称加密与非对称加密实例
本文将介绍C#中的对称加密和非对称加密的实例,涵盖了加密与解密的完整流程,旨在帮助读者加深对C#加密方法的理解和应用。
对称加密
对称加密指使用相同的密钥进行加密和解密。其核心在于保护密钥的安全性,一旦密钥被泄露,则整个加密系统都会被破解。下面以AES加密算法为例演示对称加密的实现。
- 引入命名空间
using System.Security.Cryptography;
using System.Text;
- 设置加密和解密使用的密钥
string secretKey = "123456";
- 将明文内容转化为字节数组
byte[] plainTextBytes = Encoding.UTF8.GetBytes("Hello, World!");
- 创建加密器对象,并使用密钥进行初始化
Aes encryptor = Aes.Create();
encryptor.Key = Encoding.UTF8.GetBytes(secretKey);
encryptor.IV = encryptor.Key;
- 执行加密操作,获取密文
byte[] cipherBytes;
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
cipherBytes = memoryStream.ToArray();
}
}
- 将密文转换为Base64字符串
string cipherText = Convert.ToBase64String(cipherBytes);
Console.WriteLine("密文:" + cipherText);
- 解密操作,获取明文
byte[] decryptedBytes;
using (MemoryStream memoryStream = new MemoryStream(cipherBytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor.CreateDecryptor(), CryptoStreamMode.Read))
{
decryptedBytes = new byte[cipherBytes.Length];
int count = cryptoStream.Read(decryptedBytes, 0, decryptedBytes.Length);
decryptedBytes = decryptedBytes.Take(count).ToArray();
}
}
string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
Console.WriteLine("明文:" + decryptedText);
执行完整代码,即可得到加密和解密后的结果。
非对称加密
非对称加密指使用一对密钥进行加密和解密,其中公钥用于加密,私钥用于解密。常见的非对称加密算法有RSA和DSA。下面以RSA加密算法为例演示非对称加密的实现。
- 引入命名空间
using System.Security.Cryptography;
using System.Text;
- 生成公钥和私钥
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
string publicKey = rsa.ToXmlString(false);
string privateKey = rsa.ToXmlString(true);
}
- 将明文内容转化为字节数组
byte[] plainTextBytes = Encoding.UTF8.GetBytes("Hello, World!");
- 加密操作,获取密文
byte[] cipherBytes;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(publicKey);
cipherBytes = rsa.Encrypt(plainTextBytes, false);
}
- 将密文转换为Base64字符串
string cipherText = Convert.ToBase64String(cipherBytes);
Console.WriteLine("密文:" + cipherText);
- 解密操作,获取明文
byte[] decryptedBytes;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(privateKey);
decryptedBytes = rsa.Decrypt(cipherBytes, false);
}
string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
Console.WriteLine("明文:" + decryptedText);
执行完整代码,即可得到加密和解密后的结果。
总结
本文介绍了C#中对称加密和非对称加密的实现方法,对于理解和应用C#加密算法有一定的帮助。在实际开发中,应根据需求选择对应的加密算法,并严格保证密钥的安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#对称加密与非对称加密实例 - Python技术站