Componente per crittografia Cast128 e Base64

di Autore anonimo, in Classic ASP, Coding, Cookies,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi