在ASP.NET中如何实现DES加密与解密MD5加密功能
发布时间:2023-05-17 11:43:16
在ASP.NET中,可以使用System.Security.Cryptography命名空间下的对称加密算法和哈希算法来实现DES加密和MD5加密功能。
DES加密:
对称加密算法中的DES算法采用相同的密钥进行加密解密操作,因此需要先生成一个密钥。可以使用以下代码生成一个8个字节的密钥:
byte[] key = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
然后可以使用DESCryptoServiceProvider类来实现DES算法的加密解密操作。以下是一个示例代码:
using System.Security.Cryptography;
using System.IO;
public static string EncryptDES(string plainText, byte[] key)
{
byte[] iv = key; //初始化向量可以采用密钥的方式传入,也可以使用固定的值
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, iv), 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();
}
public static string DecryptDES(string cipherText, byte[] key)
{
byte[] iv = key; //初始化向量可以采用密钥的方式传入,也可以使用固定的值
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[cipherText.Length / 2];
for (int x = 0; x < cipherText.Length / 2; x++)
{
int i = (Convert.ToInt32(cipherText.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(key, iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
以上代码中,EncryptDES函数使用DES算法加密一个字符串,返回一个经过十六进制编码的密文。DecryptDES函数使用同样的密钥解密密文,返回原始文本。
MD5加密:
哈希算法中的MD5算法可以将任意长度的消息转换成一个128位的消息摘要。可以使用以下代码实现MD5加密:
using System.Security.Cryptography;
public static string EncryptMD5(string plainText)
{
MD5 md5 = MD5.Create();
byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);
byte[] hashByteArray = md5.ComputeHash(inputByteArray);
StringBuilder sb = new StringBuilder();
foreach (byte b in hashByteArray)
{
sb.AppendFormat("{0:x2}", b);
}
return sb.ToString();
}
以上代码中,EncryptMD5函数将一个字符串进行MD5加密,返回一个32位的十六进制字符串。
