Newsgroup: it.comp.lang.visual-basic
Titolo: X Gambero

Ciao, gambero mi rivolgo a te(ma anche a tutti gli altri) perchè mi hai 
dato un'idea ruguardo all'inserimento di un codice seriale o password in 
un programma tu mi hai detto di fare cosi:
 >>prova una roba tipo:
 >>public sub Controlla_Password()
 >>  'leggi da file se è presente la password
 >>  'se è presente lasci libero accesso al programma
 >>  'altrimenti richiedi la digitazione e se corretta la salvi sul file
 >>end sub
Fin qui tutto a posto(la password l'ho fatta salvare in un file 
.txt),ora dovrei nascondere il contenuto del file(che dovrò mettere 
insieme agli altri file del programma) contenente la password.Come posso 
fare?
Grazie dell'aiuto!!
Albo

 fare?
sul file ci devi salvare la password criptata una volta che l'utente l'ha
inserita!
es.
1. Memorizzi la password corretta sul file criptandola
tmp=Coding(Password)
SalvaSuFile(tmp)
2. Controllo all'accesso
dim tmp as string
dim Password as string
tmp=RichiediPasswordAllUtente()
Password=LeggiPasswordCriptataDalFile()
if Coding(tmp)=Password then
    'Accesso consentito
else
    'Accesso negato
end if
per memorizzare la password criptata sul file puoi utilizzare questa
funzione che č stata postata qualche giorno fa...
Public Function Coding(InputCode As String) As String
    Dim i As Long
    Dim N As Long
    Dim H As String
    For i = 1 To Len(InputCode)
        N = N + Asc(Mid(InputCode, i, 1))
        N = (N * 1717 + 1717) Mod 1048576
    Next
    For i = 1 To 7
        N = (N * 997 + 997) Mod 1048576
    Next
    H = Right("0000" & Hex$(N), 4)
    For i = 1 To Len(InputCode)
        N = N + Asc(Mid(InputCode, i, 1))
        N = (N * 997 + 997) Mod 1048576
    Next
    For i = 1 To 7
        N = (N * 1717 + 1717) Mod 1048576
    Next
    Coding = H & Right("0000" & Hex(N), 4)
End Function

 inserita!
Seeeeee che bella idea!
Le password *NON SI SALVANO* se non per scopi specifici.
Se poi devi salvarla per forza, allora fai cosě:
1) Inserisci nell'eseguibile una stringa non decifrabile di
    *almeno* 200 caratteri nel set ASCIIZ. Ovviamente non
    deve essere intellegibile( tipo: nessuna data di nascita,
    cose tipo "pippo","password",ecc ).
2) Quando installi il programma, genera una passphrase
    casuale con un valore SALT, vale a dire un valore che
    cambia ogni volta che ne generi uno, un GUID va piů che
    bene.
3) Cripta la password che devi conservare con la passphrase
    generata in fase di installazione. Se devi modificare la
    password, rigeneri il SALT e lasci inalterata la password
    generata in installazione.
4) Cripti la password con Blowfish usando la chiave al punto 2)
Ma questo *SOLO* se non puoi evitare di non salvare la
password.
Ciao,
Andrea

 4) Cripti la password con Blowfish usando la chiave al punto 2)
be il metodo che gli avevo proposto non vedo quali controindicazioni
abbia... tutto dipende dall'algoritmo di criptazione...
se č buono uno sta tranquillo... poi che non sia una buona idea memorizzare
le password lo so ma lui lo vuole fare... problemi suoi...
CIAO

 CIAO
Ciao,
Andrea

 bomba atomica ad uno che vuole dominare il mondo.
Una camomillina ? :-)
Seriamente: dipende da che cosa la pwd è destinata a proteggere.
Se è maggiorenne e deve nascondere un po' di foto di ornitorinchi
(cit.: 
http://groups.google.it/groups?q=foto+di+ornitorinchi
) non vedo
la necessità di metterla giù dura.
Se serve a proteggere la formula della c0c@-C0l@, o la valigetta
per il lancio degli ICBM, allora OK, niente è abbastanza sicuro :-)
Certo, la criptazione proposta, quella con il codice ascii
non è che... beh, non è, e basta :-).
Bye, G.

 bomba atomica ad uno che vuole dominare il mondo.
concordo con te ma io ho postato un esempio facile e veloce.... dal
messaggio di richiesta mi era sembrato che non dovesse fare un programma per
accesso a dati bancari o roba del genere... mi è sembrata una richiesta da
*principiante* ed ho risposto con soluzioni alla sua portata.... magari mi
sbaglierò... però se specifica l'utilizzo che ne deve fare uno si regola di
conseguenza..
CIAO

 CIAO
Ciao,
Andrea

fano bene.
Cosi' come scrivere senza commettere errori di ortografia :-PPP
A proposito: *che cosa* non va (e perche') nella funzione di hashing
proposta da Gambero, che a sua volta l'ha ripresa da Gianluca (che
principiante proprio non e')?
-- 
ciao, un hal di passaggio

 principiante proprio non e')?
Manca il SALT, essenziale per rendere UNIVOCO l'hash.
Almeno, io non lo vedo, ma il mio VB è un pò arrugginito.
Un'altra cosa che non mi piace troppo è la mancanza di un
algoritmo casuale di scambio dei caratteri all'interno di
InputCode prima di ognuna delle fasi di processing della
stringa stessa. Ovviamente, i valori dovrebbero essere *davvero*
casuali, per esempio prendendo il rumore della scheda audio ed
usare quello( se la scheda audio non sta "emettendo" musica, i
valori registrati corrispondono al rumore della scheda ).
Altra cosa ancora, sarei più tranquillo con una funzione
"crittograficamente sicura", verificata da esperti internazionali
come MD5 o SHA1. Non che non mi fidi di Gianluca eh, per carità,
però che mi risulti Gianluca non è un matematico.
Mi è capitato qualche volta( anche se non in ambito crittografico ) di
trovare delle collisioni nelle funzioni hash con valori *apparentemente*
totalmente diversi( funzioni scritte da me ), anche perché quando
sono in ambito "crypto" uso sempre una delle funzioni standard( non
dico quale per non dare un appiglio ad eventuali cracker ).
Ripeto, potrò sembrare integralista, però la crittografia è un
argomento troppo delicato per essere trattato in modo "leggero".
Ciao,
Andrea

argomento troppo delicato per essere trattato in modo "leggero".
Sulla non banalita' della crittografia e della sicurezza in generale
sono d'accordissimo.
Bisogna in ogni caso considerare il valore dei dati da proteggere, da
chi bisogna proteggerli e quale tipo di accesso abbia il potenziale
intruso.
Anche il miglior algoritmo poco puo' contro un disassemblatore che
sostituisce un je con un jne ;-)



Allora,inanzitutto ringrazio tutti per aver discusso(anche animatamente 
ho visto!!)le possibili soluzioni alla mia richiesta.
Io devo proteggere semplicemente un programma in modo che non venga 
distribuito illegalmente con facilità.
Per quanto riguarda se sono un principiante o meno credo che non ci sono 
dubbi a meno che non esiste un esperto che non sappia fare queste 
cose!!!Però non sono daccordo che i principianti devono fare i 
principianti,significherebbe rimanere sempre allo stesso livello e ciò 
mi sembra alquanto stupido per chi intende cimentarsi nei linguaggi di 
programmazione!!
Ciao
Albo


 programmazione!!
io sono daccordo con te... ma non aggiungo altro senno mi linciano :-)
CIAO

 Albo
Andrea