Criptografando a QueryString
abr 10
.NET, C#, Desenvolvimento, Dicas 2 Comments
Muito de nós usamos parametros QueryString para passar informações de uma pagina para outra como por exemplo um produto selecionado:http://localhost:1234/DadosProduto.aspx?id=10
O problema de fazer assim é que os dados ficam viziveis ao usuario, e se ele for um usuario mais avançado tentará acessar informações que talvez não poderia ser vizualizado por ele, então neste caso faremos um exemplo de como criptografar a QueryString asssim:http://localhost:1234/DadosProduto.aspx?id=03EscXnBsci=
Desta maneira o id do produto está criptografado, no nosso exemplo iremos precisar apenas de dois metodos um de criptografar e outro para descriptografar vamos lá
Criaremos uma classe chamada Encryption64:
using System;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;
/// <summary>
/// Classe para Criptografar e Descriptografar parametros
/// QueryString
/// </summary>
namespace ExemploQueryString
{
public class Encryption64
{
private static byte[] key = { };
private static byte[] IV = { 0×12, 0×34, 0×56, 0×78,
0×90, 0xAB, 0xCD, 0xEF };
public static string Encrypt(string stringToEncrypt,
string sEncryptionKey)
{
byte[] inputByteArray;
try
{
key = Encoding.UTF8.GetBytes(sEncryptionKey.
Substring(0, 8));
DESCryptoServiceProvider des =
new DESCryptoServiceProvider();
inputByteArray = Encoding.UTF8.GetBytes
(stringToEncrypt);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms,
des.CreateEncryptor(key, IV), CryptoStreamMode
.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (System.Exception ex)
{
throw ex;
}
}
public static string Decrypt(string stringToDecrypt,
string sEncrytionKey)
{
byte[] inputByteArray = new byte[stringToDecrypt
.Length];
try
{
key = Encoding.UTF8.GetBytes(sEncrytionKey
.Substring(0, 8));
DESCryptoServiceProvider des =
new DESCryptoServiceProvider();
inputByteArray =
Convert.FromBase64String(stringToDecrypt.Replace(
” “, “+”));
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.
CreateDecryptor(key,IV),CryptoStreamMode.Write);
cs.Write(inputByteArray, 0 , inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch (Exception ex)
{
throw ex;
}
}
}
}
Para criptografar a url utilize:
protected void Button1_Click(object sender, EventArgs e)
{
string url = “~/DadosProduto.aspx?ID=” + Encryption64.Encrypt(“10″, “!#$a54?3″);
Response.Redirect(url);
}
E para descriptografar:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(“O Produto Selecionado foi o:” +
Encryption64.Decrypt(Request.QueryString["ID"], “!#$a54?3″));
}

Este conteudo tem referencia do Rodrigo Sendin
Qualquer duvido é só comentar
Vlw até +
RSS
dez 03, 2009 @ 12:15:14
Embora ainda nao tenha testado, eu imaginei o seguinte:
Se eu tiver um gridview que é populado via hard-code, ou seja, lá no aspx mesmo, como eu faço para ela criptografar um parametro na querystring.
dez 03, 2009 @ 12:25:26
Entao Alysson, você pega o valor da gridview e faz a conversão entendeu? no mesmo esquema