C#实现加密的几种方法介绍
在C#中实现加密的方法有很多,本文将介绍其中的几种常用方法。
1. 对称加密算法
对称加密算法是指加密和解密使用同一密钥的加密算法。常用的对称加密算法有DES、3DES、AES等。
1.1 DES加密算法
using System.Security.Cryptography;
using System.Text;
public static string DES_Encrypt(string str, string key)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
des.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
des.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder sb = new StringBuilder();
foreach (byte b in ms.ToArray())
{
sb.AppendFormat("{0:X2}", b);
}
return sb.ToString();
}
1.2 AES加密算法
using System.Security.Cryptography;
using System.Text;
public static string AES_Encrypt(string str, string key)
{
byte[] keyArray = Encoding.UTF8.GetBytes(key);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
byte[] resultArray = cTransform.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
2. 非对称加密算法
非对称加密算法是指加密和解密使用不同密钥的加密算法。常用的非对称加密算法有RSA算法。
2.1 RSA加密算法
using System.Security.Cryptography;
using System.Text;
public static string RSA_Encrypt(string xmlPublicKey, string content)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPublicKey);
byte[] inputByteArray = Encoding.UTF8.GetBytes(content);
byte[] resultArray = rsa.Encrypt(inputByteArray, false);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
示例演示
示例1:对称加密算法DES加密
string plainText = "这是一段明文";
string key = "11111111";
string encryptedText = DES_Encrypt(plainText, key);
Console.WriteLine("加密后的密文:{0}", encryptedText);
示例2:非对称加密算法RSA加密
string plainText = "这是一段明文";
string xmlPublicKey = "<RSAKeyValue><Modulus>...</Modulus><Exponent>65537</Exponent></RSAKeyValue>";
string encryptedText = RSA_Encrypt(xmlPublicKey, plainText);
Console.WriteLine("加密后的密文:{0}", encryptedText);
以上就是C#实现加密的几种常用方法的介绍。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现加密的几种方法介绍 - Python技术站