asp.net 的加密Encode和解密Decode.

时间:2014-05-16 18:53:50   收藏:0   阅读:375

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);

}

 

asp.net 的加密Encode和解密Decode.,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!