Aquí es una manera de hacerlo en VB Desde: http://www.devcity.net/Articles/47/1/encrypt_querystring.aspx
Envoltura para el código de cifrado: de pasar sus parámetros de cadena de consulta en esto, y cambiar la clave !!!
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
código de encriptación:
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
Esto casi funciona. Cambié estas dos líneas: Devuelva Server.UrlEncode (enc64.Encrypt (qs, _key)) y Devuelva Server.UrlDecode (enc64.Decrypt (qs, _key)) y no se moleste con Replace ("" , "+") –
Además, uso (¡oh, cómo me gustaría poder editarlo!): Encriptación: Dim myQS = EncryptQueryString ("id = 12345 & year = 2008") Response.Redirect (String.Format ("Default.aspx") ? q = {0} ", myQS)) Desencriptado: Dim myQS As String = DecryptQueryString (Request.QueryString (" q ")) –
¿Hay alguna otra forma de hacer el cifrado pero no hacer que url sea demasiado largo? Algunas veces si hay muchas cadenas de caracteres que hacen que la URL tenga más de 2000 caracteres y no es buena para la mayoría de los navegadores. – Mhmd