下面是“C#开发中经常用的加密解密方法示例”的完整攻略:
1. 加密解密方法
在C#开发中经常用到的加密解密方法有:哈希加密、对称加密和非对称加密。
哈希加密
哈希加密是指将任意长度的二进制值映射成固定长度的较小二进制值的过程,其特点是不可逆。C#中经常使用的哈希加密方法有MD5、SHA1、SHA256等。下面是一个MD5加密的示例代码:
using System.Security.Cryptography;
using System.Text;
public static string GetMD5(string source)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bytes = Encoding.UTF8.GetBytes(source);
byte[] result = md5.ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
foreach (byte b in result)
{
sb.Append(b.ToString("x2"));
}
return sb.ToString();
}
在示例代码中,首先创建MD5加密算法的实例,然后将待加密字符串转换成字节数组,利用ComputeHash方法计算MD5值,最后将MD5值转换成16进制字符串返回。
对称加密
对称加密是指使用同一个密钥进行加密和解密的加密方式。C#中经常使用的对称加密方法有AES、DES等。下面是一个AES加密的示例代码:
using System.Security.Cryptography;
using System.Text;
public static string AESEncrypt(string source, string key)
{
byte[] bytes = Encoding.UTF8.GetBytes(source);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using (var aes = Aes.Create())
{
aes.Padding = PaddingMode.PKCS7;
aes.Key = keyBytes;
aes.IV = keyBytes;
using (var msEncrypt = new MemoryStream())
{
using (var csEncrypt = new CryptoStream(msEncrypt, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
csEncrypt.Write(bytes, 0, bytes.Length);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
public static string AESDecrypt(string source, string key)
{
byte[] bytes = Convert.FromBase64String(source);
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
using (var aes = Aes.Create())
{
aes.Padding = PaddingMode.PKCS7;
aes.Key = keyBytes;
aes.IV = keyBytes;
using (var msDecrypt = new MemoryStream(bytes))
{
using (var csDecrypt = new CryptoStream(msDecrypt, aes.CreateDecryptor(), CryptoStreamMode.Read))
{
using (var srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
在示例代码中,首先将待加密字符串和密钥转换成字节数组,然后创建AES加密算法的实例,并设置PaddingMode和Key、IV等参数。利用CreateEncryptor方法创建加密流,将待加密字符串写入加密流,得到密文。对于解密,需要先将密文转换成字节数组,然后创建AES解密算法的实例,并设置PaddingMode和Key、IV等参数。利用CreateDecryptor方法创建解密流,将密文写入解密流,得到原始字符串。
非对称加密
非对称加密是指使用一对公钥和私钥进行加密和解密的加密方式。C#中经常使用的非对称加密方法有RSA等。下面是一个RSA加密的示例代码:
using System.Security.Cryptography;
using System.Text;
public static string RSAEncrypt(string source, string publicKey)
{
byte[] bytes = Encoding.UTF8.GetBytes(source);
using (var rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(publicKey);
byte[] resultBytes = rsa.Encrypt(bytes, false);
return Convert.ToBase64String(resultBytes);
}
}
public static string RSADecrypt(string source, string privateKey)
{
byte[] bytes = Convert.FromBase64String(source);
using (var rsa = new RSACryptoServiceProvider())
{
rsa.FromXmlString(privateKey);
byte[] resultBytes = rsa.Decrypt(bytes, false);
return Encoding.UTF8.GetString(resultBytes);
}
}
在示例代码中,首先将待加密字符串转换成字节数组,然后创建RSA加密算法的实例,并将公钥字符串转换成RSA格式。使用Encrypt方法对待加密字符串进行加密,并将结果转换成Base64字符串返回。对于解密,需要先将密文字符串转换成字节数组,然后创建RSA解密算法的实例,并将私钥字符串转换成RSA格式。使用Decrypt方法对密文字符串进行解密,并将结果转换成字符串返回。
2. 示例说明
针对以上加密解密方法,下面简单演示哈希加密方法的使用示例。
string source = "Hello, world!";
string md5 = GetMD5(source);
Console.WriteLine($"MD5({source}) = {md5}");
在示例代码中,首先定义待加密字符串,然后调用GetMD5方法计算MD5值,并输出结果。
输出结果如下:
MD5(Hello, world!) = ed076287532e86365e841e92bfc50d8c
以上是“C#开发中经常用的加密解密方法示例”的完整攻略,包括加密解密方法的介绍和示例说明。希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#开发中经常用的加密解密方法示例 - Python技术站