c# 几种常见的加密方法的实现
前言
在现代社会中,安全性和保密性越来越重要,加密技术也越来越成为人们广泛使用的工具之一。c# 作为一门流行的编程语言,其加密方法也非常丰富和实用,本文将以 c# 为主要实例,介绍几种常见的加密方法。
对称加密算法
对称加密算法是指加密和解密使用同一密钥的加密算法,也叫做共享密钥加密算法。在对称加密中,用于加密数据的密钥必须在发送者和接收者之间共享,所以其密钥的保密性显得尤为重要。通常,对称加密算法的安全性是依赖于密钥的安全性,即不为非法用户获取和破解。
代码示例:使用 c# 中的 AesManaged 类进行对称加密
using System;
using System.IO;
using System.Security.Cryptography;
public static byte[] AesEncrypt(string key, byte[] dataToEncrypt)
{
byte[] encrypted;
using (AesManaged aes = new AesManaged())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = aes.Key;//使用密钥初始化向量
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(dataToEncrypt);
}
encrypted = ms.ToArray();
}
}
}
return encrypted;
}
非对称加密算法
非对称加密算法是共有密钥加密算法,密钥是成对出现的,一个是公开密钥,另一个是私有密钥。公钥可以被任何人获取,私钥则只有该密钥的拥有者才能获取。非对称加密由于其加密解密使用不同的密钥,所以安全性相对于对称加密要强很多。在传统的非对称加密算法中,最经典的算法是 RSA 算法。
代码示例:使用 c# 中的 RSACryptoServiceProvider 类进行非对称加密
using System;
using System.Security.Cryptography;
using System.Text;
public static byte[] RSASign(string dataToSign, string privateKeyXml)
{
byte[] signData;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(privateKeyXml);
byte[] data = Encoding.UTF8.GetBytes(dataToSign);
signData = rsa.SignData(data, SHA1.Create());
}
return signData;
}
public static bool VerifyRSASign(string dataToVerify, byte[] signedData, string publicKeyXml)
{
bool verified = false;
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(publicKeyXml);
byte[] data = Encoding.UTF8.GetBytes(dataToVerify);
verified = rsa.VerifyData(data, SHA1.Create(), signedData);
}
return verified;
}
散列算法
散列算法是一种单向加密算法,其输出值也被称为消息摘要或指纹。通常来说,散列算法是不可逆的,即从散列值推导出原始数据是困难的。计算机系统经常需要对大量数据进行正确性验证,散列算法则是其中的一个重要工具。
代码示例:使用 c# 中的 SHA256Managed 类进行散列算法,并将散列结果转为16进制字符串
using System;
using System.Security.Cryptography;
using System.Text;
public static string GetSHA256(string dataToHash)
{
using (SHA256 sha256 = SHA256Managed.Create())
{
byte[] rawBytes = Encoding.UTF8.GetBytes(dataToHash);
byte[] hashBytes = sha256.ComputeHash(rawBytes);
StringBuilder sb = new StringBuilder();
foreach (byte b in hashBytes)
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
}
结语
本文主要介绍了常见的几种加密算法,其中对称加密的实现基于 c# 中的 AesManaged 类,非对称加密的实现基于 c# 中的 RSACryptoServiceProvider 类,散列算法的实现则基于 c# 中的 SHA256Managed 类。这些加密算法有它们各自的应用场景,选择合适的加密算法会帮助我们更好地保护数据安全。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 几种常见的加密方法的实现 - Python技术站