针对“c#多种加解密示例(md5加密解密)”问题,以下是完整攻略:
一、什么是MD5加密?
MD5是一种单向加密算法,将任意长度的数据(字节序列)作为输入,通过一系列数学运算,得到一个固定长度(128位)的输出,即MD5值。这个过程是不可逆的,不能通过MD5值还原原来的输入数据,称为单向加密。MD5广泛应用于密码保护、文件校验等领域。
二、如何在c#中实现MD5加密?
下面是c#示例代码实现MD5加密:
using System.Security.Cryptography;
using System.Text;
public static string MD5Encoding(string origin)
{
byte[] bytes = Encoding.UTF8.GetBytes(origin);
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] targetBytes = md5.ComputeHash(bytes);
string targetString = BitConverter.ToString(targetBytes).Replace("-", "").ToUpper();
return targetString;
}
示例说明:输入一个字符串,得到该字符串的MD5值,输出为字符串类型。上述代码采用了MD5CryptoServiceProvider类实现MD5加密,调用ComputeHash()方法生成摘要信息(该方法返回byte数组),最后用BitConverter.ToString()方法将byte数组转换为字符串,并通过ToUpper()方法将字符串转换为大写形式。注意:在使用MD5加密时,需要指定输入数据的编码格式,这里采用UTF-8编码格式。
三、多种加解密示例
除了MD5加密,常用的加密算法还有对称加密算法(如AES、DES)、非对称加密算法(如RSA)等。下面给出两条示例:
1. AES加解密
AES加密算法是一种对称加密算法,既加密、又解密,常用于对敏感数据加密。下面是c#示例代码实现AES加解密:
using System.Security.Cryptography;
using System.Text;
public static string AESEncoding(string origin, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
byte[] bytes = Encoding.UTF8.GetBytes(origin);
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
ICryptoTransform transform = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] targetBytes = transform.TransformFinalBlock(bytes, 0, bytes.Length);
string targetString = Convert.ToBase64String(targetBytes);
return targetString;
}
public static string AESDecoding(string origin, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
byte[] bytes = Convert.FromBase64String(origin);
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Key = keyBytes;
aes.IV = ivBytes;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
ICryptoTransform transform = aes.CreateDecryptor(aes.Key, aes.IV);
byte[] targetBytes = transform.TransformFinalBlock(bytes, 0, bytes.Length);
string targetString = Encoding.UTF8.GetString(targetBytes);
return targetString;
}
示例说明:输入一个字符串和AES秘钥、偏移量,得到该字符串的AES加密结果,或者输入一个AES加密字符串和秘钥、偏移量,得到加密字符串的解密结果。
2. RSA加解密
RSA加密算法是一种非对称加密算法,既可以用于加密、也可以用于解密,常用于数字签名、密钥协商等场景。下面是c#示例代码实现RSA加解密:
using System.Security.Cryptography;
using System.Text;
public static string RSAEncoding(string origin, string publicKey)
{
byte[] bytes = Encoding.UTF8.GetBytes(origin);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(publicKey);
byte[] targetBytes = rsa.Encrypt(bytes, false);
string targetString = Convert.ToBase64String(targetBytes);
return targetString;
}
public static string RSADecoding(string origin, string privateKey)
{
byte[] bytes = Convert.FromBase64String(origin);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(privateKey);
byte[] targetBytes = rsa.Decrypt(bytes, false);
string targetString = Encoding.UTF8.GetString(targetBytes);
return targetString;
}
示例说明:输入一个字符串和RSA公钥,得到该字符串的RSA加密结果,或者输入一个RSA加密字符串和私钥,得到加密字符串的RSA解密结果。
以上就是“c#多种加解密示例(md5加密解密)”的完整攻略,希望能够对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#多种加解密示例(md5加密解密) - Python技术站