asp.net 的加密和解密(c#):
1. 导入所需包:
using System.IO;
using System.Text;
using System.Security.Cryptography;
2.加密
1)MD5普通加密
//获取要加密的字段,并转化为Byte[]数组
byte[] data = System.Text.Encoding.Unicode .GetBytes(str.ToCharArray());
//建立加密服务
System.Security.Cryptography.MD5 md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();
//加密Byte[]数组
byte[] result = md5.ComputeHash(data);
response.write( "MD5普通加密:" +
System.Text.Encoding.Unicode.GetString(result));
2)MD5密码加密[常用]
response.write("MD5密码加密:" +
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,
"MD5"));
3)ASP.NET中加密与解密QueryString的方法[常用]
//加密
Response.Redirect("DetailInfo.aspx?id="
+
Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(str)).Replace("+","%2B"));
//解密
string ID =
System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString["id"].ToString().Replace("%2B","+")));
加密和解密函数:
Protected
Function Encode(ByVal theStr As String) As String
Return
Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(theStr)).Replace("+",
"%2B")
End
Function
Protected Function Decode(ByVal theStr As String) As String
Return
System.Text.Encoding.Default.GetString(Convert.FromBase64String(theStr.Replace("%2B",
"+")))
End
Function
4)DES加密及解密的算法[常用密钥算法]
public static string Key = "DKMAB5DE";//加密密钥必须为8位
//加密算法
public static string MD5Encrypt(string pToEncrypt)
{ DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
des.Key = ASCIIEncoding.ASCII.GetBytes(Key);
des.IV = ASCIIEncoding.ASCII.GetBytes(Key);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(),
CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray()){
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
//解密算法
public static string MD5Decrypt(string pToDecrypt)
{ DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++){
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(Key);
des.IV = ASCIIEncoding.ASCII.GetBytes(Key);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(),
CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.ASCII.GetString(ms.ToArray());
}
5)RSA加密及解密的算法[常用密钥算法]
//加密算法
public string RSAEncrypt(string encryptString)
{ CspParameters csp = new CspParameters();
csp.KeyContainerName = "whaben";
RSACryptoServiceProvider RSAProvider = new
RSACryptoServiceProvider(csp);
byte[] encryptBytes =
RSAProvider.Encrypt(ASCIIEncoding.ASCII.GetBytes(encryptString), true);
string str = "";
foreach (byte b in encryptBytes)
{ str = str + string.Format("{0:x2}", b);
}
return str;
}
//解密算法
public string RSADecrypt(string decryptString)
{ CspParameters csp = new CspParameters();
csp.KeyContainerName = "whaben";
RSACryptoServiceProvider RSAProvider = new
RSACryptoServiceProvider(csp);
int length = (decryptString.Length / 2);
byte[] decryptBytes = new byte[length];
for (int index = 0; index < length; index++)
{ string substring = decryptString.Substring(index * 2, 2);
decryptBytes[index] = Convert.ToByte(substring, 16);
}
decryptBytes = RSAProvider.Decrypt(decryptBytes, true);
return ASCIIEncoding.ASCII.GetString(decryptBytes);
}