PDA

View Full Version : Protezione password in Visual Basic 2005 tramite crittografia


ax89
27-06-2006, 17:37
Salute a tutti.
Ritorno con un altro quesito rivolto ai più esperti:
non volendo scrivere ex-novo un algoritmo di criptazione/decriptazione per una password, esistono degli algoritmi già pronti all'uso ?
Questo perché non voglio che ci siano riferimenti testuali espliciti all'interno del codice, sicché con un disassemblatore sarebbe estremamente semplice trovare la stringa coincidente con la password. Si può fare ?
Non vorrei usare il semplice metodo:
If TextBox1.Text = "paperella" Then MsgBox("Sei autorizzato") Else MsgBox("Non sei autorizzato")
Perché come ho detto prima basta disassemblare l'eseguibile, e senza eseguire il debug cercare i riferimenti stringa presenti nel codice per poter scovare la password "paperella".

mynos79
27-06-2006, 18:02
Può esserti utile leggere questo articolo delle msdn:
http://www.microsoft.com/italy/msdn/library/vb/VBCompPI.mspx
Anche se riguarda l' implementazione con VB6, si tratta di una funzionalità del framework e quindi utilizzabile in vb.net facilmente (è spiegato tutto).

Ma se hai ancora dubbi puoi chiedere ...

ax89
27-06-2006, 18:27
1) Non mi suona di facile comprensione.
2) Viene illustrato l'esempio di scrittura crittografata su di un file, ma non di elaborazione di un dato non crittografato ad un dato crittografato quale sarebbe la mia volontà, cioè io non desidero alcun output, ma semplicemente voglio che data una password crittografata CONTENUTA NEL CODICE, si confronti con essa un testo immesso in una textbox anch'esso crittografato con lo stesso algoritmo, cosicché non sia necessario "scoprire" la password cifrata, ma solo "vedere" se il testo immesso nella textbox, dopo essere stato anch'esso crittato con lo stesso algoritmo della password già crittografata, venga confrontato con quest'ultima e venga stabilito se è uguale o meno.
Per essere ancora + rudimentale nell'esprimermi, voglio dire questo:

ho questa password: "leoncino", senza virgolette. Supponiamo che crittografata con l'algoritmo DES diventi "DXDDDEWDS455SEE1231EAAWESD", ovviamente senza virgolette. BENE: io lascio nel codice la password cifrata, ovvero: DXDDDEWDS455SEE1231EAAWESD.
POI
Scrivo una password in una textbox.
La password della textbox (che chiamerò password 2) viene codificata tramite l'algoritmo DES usando la medesima chiave usata per quella che si trova già nel codice.
Viene eseguita la verifica per sapere se la password 2 corrisponde alla password presente nel codice.
Tutto qui.

mynos79
27-06-2006, 18:45
:D avevo capito ... non mi servono i disegnini :sofico:

O ti crei una semplice funzione che con qualche xor e shift sull' ascii cripti la password (penso sia la cosa più sbrigativa, visto che il tuo scopo è non mostrare in chiaro le stringhe da un editor esadecimale) ... oppure scrivi la password non come "leoncino" ma come somma dei caratteri ascii tradotti col chr: chr(108)+chr(101)+chr(111)+chr(110)+chr(99)+chr(105)+chr(110)+chr(111)
Essendo sempre una scritta, puoi tranquillamente eguagliarla a quella ricevuta dalla textbox di input.

Altrimenti usare le funzioni del framework comincia a non valere il gioco, se ti serve solo questo tipo di protezione ...

mynos79
27-06-2006, 19:06
Comunque se vuoi sare algoritmi cattivi di crittografia, guarda questo esempio in vb.net con Base64 e AES:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4620&lngWId=10
Sullo stesso sito puoi trovare moltissime implementazioni di algoritmi di sicurezza ... con rispetti guide.

shinya
28-06-2006, 09:14
http://www.codeproject.com/cs/algorithms/StoringPasswords.asp

Forse questo articolo può esserti utile. Si riferisce proprio a .net :)