Criptare parametri url con Base64

giovedì 22 gennaio 2009 - 11.10

ely_bise Profilo | Newbie

Ciao a tutti,
ho trovato una funzione che cripta e decripta una stringa, ma il problema è che per convertire l'array di byte in stringa usa ToBase64String che prevede anche caratteri come '/' che però non va bene se poi la striga viene passata via url.
Come potrei risolvere il problema?
Ecco un pezzo della classe che uso, riporto la funzione di criptazione:

public string EncryptString(string src)
{
keyb = LoadKey();
byte[] p = Encoding.ASCII.GetBytes(src.ToCharArray());
byte[] encodedBytes = { };
MemoryStream ms = new MemoryStream();
RijndaelManaged rv = new RijndaelManaged();
CryptoStream cs = new CryptoStream(ms, rv.CreateEncryptor(keyb, ivb), CryptoStreamMode.Write);
try
{
cs.Write(p, 0, p.Length);
cs.FlushFinalBlock();
encodedBytes = ms.ToArray();
}
finally
{
ms.Close();
cs.Close();
}
return Convert.ToBase64String(encodedBytes);
}

Grazie mille

balfaz Profilo | Expert

dopo la conversione puoi fare un htmlencode su questo valore in questa maniera
c#
string EncodedString = Server.HtmlEncode(strB64);
vb
dim encodedstring as string = server.htmlencode(strB64)

spero che questo ti serva

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ely_bise Profilo | Newbie

Mi dispiace ma in questo modo le barre le tiene...oltre poi dopo a non riuscire a recuperare il valore reale..

balfaz Profilo | Expert

prova in questa maniera
Server.UrlEncode(variabile_Base64),
poi per riconvertirlo fai server.urldecode(varibile_querystring)

facci sapere

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ely_bise Profilo | Newbie

Forse mi sono complicata un pò la vita e mi sono persa in una goccia d'acqua...
per tagliare la testa al toro o semplicemente fatto un Replace di "/" con "-" non previsto come carattere in Base64.
Poi sul valore di querystring faccio prima un replace da "-" a "/" e decripto.
Grazie comunque!

balfaz Profilo | Expert

ti consiglio di applicare il metodo che ti avevo proposto, ti spiego, mi è capitato di dover convertire certi valori in base 64 e ci sono altri caratteri che non sono gestiti dei browser come url e possono comparire quando realizzi questa coversione. OKKIO



"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ely_bise Profilo | Newbie

Ciao grazie dei consigli...sto provando ad usare il tuo metodo, perchè il mio...non funziona sempre...
Solo che con il tuo sistema, anche con Server.UrlEncode sulla stringa criptata non funziona...le / non me le toglie...e quindi non mi trova la pagina poi!!
Sbaglio qualcosa? Altri suggerimenti per caso?
grazie mille

balfaz Profilo | Expert

diciamo che purtroppo essendo urlencode questo metodo non converte i caratteri validi dentro l'url tipo "?", "/", "&"
http://msdn.microsoft.com/en-us/library/zttxte6w.aspx (per più informazione)
e purtroppo questa conversione dovrà essere realizzata manualmente con una tua funzione, chiaro se vai a vedere passare da 3 costante (i caratteri sopra) a una bella riga di caratteri non interpretati per il browser è già qualcosa.

comunque cercherò in giro se trovo qualcosa e senz'altro ti dico.

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

ely_bise Profilo | Newbie

Grazie mille, siete sempre un sacco gentili in questo forum! :)
Intanto arrangio con un replace, se trovo anch'io qualcosa vi faccio sapere!
Grazie ancora!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5