0
我使用下面的LINK描述的方法,我用下面的代码进行加密:解码加密的查询字符串
'Page1.aspx
Protected Sub butEncrypt_Click(sender As Object, e As EventArgs) Handles butEncrypt.Click
Dim QueryString As String = "type=Int&pk=" & _primaryKey
QueryString = Tools.encryptQueryString(QueryString)
Response.Redirect(/SearchResults.aspx?Val=" & QueryString)
End Sub
,最后去加密:
'SearchResults.aspx
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not IsPostBack) Then
If Not String.IsNullOrEmpty(HttpContext.Current.Request(CIAppGlobals.GlobalVar.Val)) Then
Dim qs As String = Request.QueryString(CIAppGlobals.GlobalVar.Val)
qs = Tools.decryptQueryString(qs)
Dim Values As String() = qs.Split(CChar("&"))
_imageType = String.Empty
_primaryKey = 0
For Each value As String In Values
Dim data As String() = value.Split(CChar("="))
Select Case data(0).ToUpper
Case "TYPE"
_imageType = data(1)
Case "PK"
_primaryKey = CInt(data(1))
End Select
Next
Else
_imageType = HttpContext.Current.Request("type")
_primaryKey = CInt(HttpContext.Current.Request("pk"))
End If
End If
End Sub
我的问题我应该使用不同的方法来提取解码后的查询字符串值,而不是我正在做的事情?预先感谢您的建设性答复。
解决方案
看着达林的回应后,我已决定将其纳入我的项目,这是我更新的代码:
'Page1.aspx
Protected Sub butEncrypt_Click(sender As Object, e As EventArgs) Handles butEncrypt.Click
Dim query = HttpUtility.ParseQueryString(String.Empty)
query("type") = "Int"
query("pk") = CStr(_primaryKey)
Dim QueryString As String = Tools.encryptQueryString(query.ToString())
Response.Redirect(/SearchResults.aspx?Val=" & QueryString)
End Sub
我仍然希望,因为我想避免的查询字符串加密用户通过手动更改查询字符串值
感谢您的回复。 Tools类包含我在OP中引用的链接中找到的两个方法(http://stackoverflow.com/a/1330421/100283)。我想将值存储在数据库中,但我正在使用旧数据库,因此我无法对其进行任何新更改。 – 2012-01-04 20:00:27
好吧,我明白你的意思,但Type只能是五个不同值(Int,Sbj,Veh,Grp和Bus)中的一个,_primaryKey是一个整数值。所以这两个值都不会包含&或= =字符。我会加入你的解决方案,因为它不会受到伤害。 – 2012-01-04 20:29:43