Asp.net

如何在 asp.net 中加密查詢字元串?

  • May 8, 2018

我需要加密和解密 ASP.NET 中的查詢字元串。

查詢字元串可能如下所示:

http://www.mysite.com/report.aspx?id=12345&year=2008

如何加密整個查詢字元串,使其看起來像下面這樣?

http://www.mysite.com/report.aspx?crypt=asldjfaf32as98df8a

然後,當然,我如何解密它?對於這樣的事情,最好的加密是什麼?三重DES?

這是在 VB 中執行此操作的一種方法來自: http: //www.devcity.net/Articles/47/1/encrypt_querystring.aspx

**加密程式碼的包裝器:**將您的查詢字元串參數傳遞給它,並更改密鑰!!!

Private _key as string = "!#$a54?3"
Public Function encryptQueryString(ByVal strQueryString As String) As String
   Dim oES As New ExtractAndSerialize.Encryption64()
   Return oES.Encrypt(strQueryString, _key)
End Function

Public Function decryptQueryString(ByVal strQueryString As String) As String
   Dim oES As New ExtractAndSerialize.Encryption64()
   Return oES.Decrypt(strQueryString, _key)
End Function

加密程式碼:

Imports System
Imports System.IO
Imports System.Xml
Imports System.Text
Imports System.Security.Cryptography

Public Class Encryption64
   Private key() As Byte = {}
   Private IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}

   Public Function Decrypt(ByVal stringToDecrypt As String, _
       ByVal sEncryptionKey As String) As String
       Dim inputByteArray(stringToDecrypt.Length) As Byte
        Try
           key = System.Text.Encoding.UTF8.GetBytes(Left(sEncryptionKey, 8))
           Dim des As New DESCryptoServiceProvider()
           inputByteArray = Convert.FromBase64String(stringToDecrypt)
           Dim ms As New MemoryStream()
           Dim cs As New CryptoStream(ms, des.CreateDecryptor(key, IV), _
               CryptoStreamMode.Write)
           cs.Write(inputByteArray, 0, inputByteArray.Length)
           cs.FlushFinalBlock()
           Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
           Return encoding.GetString(ms.ToArray())
       Catch e As Exception
           Return e.Message
       End Try
   End Function

   Public Function Encrypt(ByVal stringToEncrypt As String, _
       ByVal SEncryptionKey As String) As String
       Try
           key = System.Text.Encoding.UTF8.GetBytes(Left(SEncryptionKey, 8))
           Dim des As New DESCryptoServiceProvider()
           Dim inputByteArray() As Byte = Encoding.UTF8.GetBytes( _
               stringToEncrypt)
           Dim ms As New MemoryStream()
           Dim cs As New CryptoStream(ms, des.CreateEncryptor(key, IV), _
               CryptoStreamMode.Write)
           cs.Write(inputByteArray, 0, inputByteArray.Length)
           cs.FlushFinalBlock()
           Return Convert.ToBase64String(ms.ToArray())
       Catch e As Exception
           Return e.Message
       End Try
   End Function

End Class

引用自:https://stackoverflow.com/questions/240713