Molto spesso mi è capitato di dover crittografare delle stringhe da ASP, ma non ho mai trovato un componente ActiveX gratuito, sia pure un semplice DES.
Per questo ho deciso di imparare a scrivere componenti COM con VC++ e di svilupparne uno io stesso.
Come algoritmo ho scelto il Cast128. Si tratta di un algoritmo di crittografia di tipo "simmetrico"; ciò vuol dire che la chiave di crittografia deve essere la stessa per per criptare e decriptare.
La lunghezza massima della chiave è 128 bit, mentre i dati devono essere forniti in blocchi da 64 bit.
Il componente accetta come input stringhe di lunghezza arbitraria e restituisce il risultato codificato in bas64, in modo da poterlo trattare ancora come stringa.
E' possibile tuttavia usarlo anche con degli array (contenenti unsigned byte 8 bit), ma a patto che contengano un numero di elementi che sia multiplo di 8 (vi ricordo che il Cast128 accetta blocchi da 64 bit in input, cioè 8 byte alla volta). L'output in tal caso sara' l'array originale coi dati criptati.
Infine, è possibile usare indipendentemente dal Cast128 i metodi di codifica e decodifica bas64, per codificare sia stringhe che array di byte.
Ecco un esempio d'uso del componente, i cookies criptati.
<% REM Settaggio di un cookie: dim CastKey, MyServer, MyUserName, MyPassword, objCast128 CastKey = "pass" MyServer = "mail.anon.net" MyUserName = "goku" MyPassword = "songoku" set objCast128 = server.createObject("cast.cipher") response.cookies("CookieName")("server") = objCast128.cast128encode(CastKey , MyServer ) response.cookies("CookieName")("login") = objCast128.cast128encode(CastKey , MyUserName ) response.cookies("CookieName")("password") = objCast128.cast128encode(CastKey, MyPassword) set objCast128 = Nothing Response.Cookies("CookieName").Expires = dateadd("d",10,date) Response.Cookies("maiCookieNamelclient").Domain = "www.anon.net" Response.Cookies("CookieName").Path = "/" Response.Cookies("CookieName").Secure = false REM Recupero di un cookie criptato: dim CastKey, MyServer, MyUserName, MyPassword, objCast128, encodedMyUserName, encodedMyPassword, encodedMyServer CastKey = "pass" encodedMyUserName = request.cookies("CookieName")("login") encodedMyPassword = request.cookies("CookieName")("password") encodedMyServer = request.cookies("CookieName")("server") set objCast128 = server.createObject("cast.cipher") MyUserName= objCast128.cast128decode("pass", encodedMyUserName ) MyPassword= objCast128.cast128decode("pass", encodedMyPassword ) MyServer= objCast128.cast128decode("pass", encodedMyServer ) set objCast128 = Nothing %>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Accedere con ASP.NET ad un documento XML creato dall'oggetto recordset di ADO e ASP
- Richiamare programmaticamente le operazioni di aggiornamento, eliminazione e inserimento di FormView, DetailsView e GridView
- Ricavare lo spazio occupato su disco dal nostro sito
- Realizzare siti sicuri con ASP.NET Web Pages
- Aumentare la scalabilità di ASP.NET Core Web API con caching client side