Newsgroup: it.comp.www.php
Titolo: MD5

Come ormai tutti sapete sono alla continua esplorazione di PHP avendo 
iniziato da poco, e ho talmente tanta voglia di impararmi tutto che studio 
ventimila cose insieme.. lo so lo so...È SBAGLIATO! xò ora ho una 
necessità...
Sto vedendo l'MD5, ma è vero che basta questa istruzione: $valore = 
md5($valore); per criptare il contenuto di una variabile?
e una volta criptata la manda al db già cosi per memorizzarla criptata?
e poi ogni volta che viene eseguito il login prima di confrontare la 
password inserita con quella nel database devo criptare la variabile e poi 
confrontarla giusto?
ed infine conviene fare tutto questo?
Grazie a tutti per la disponibilità!

 md5($valore); per criptare il contenuto di una variabile?
MD5 non e' un algoritmo di criptazione, e' un algoritmo di hashing.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 MD5 non e' un algoritmo di criptazione, e' un algoritmo di hashing.
Allora scusami leggi il messaggio "Recupero password e MD5" (di oggi) cosa 
significa? Cioè da quanto leggo emerge che sia un metodo di criptazione, e 
anche da quanto ho letto su alcuni siti sembra essere così... qual'è invece 
la differenza? 

 qual'h invece la differenza? 
Prima di domandarlo, cerca con google, la risposta e' di pubblico
dominio.
-- 
I am what I am, I do what I can


 la differenza? 
MD5 è una funzione hash (o funzione digest->riassunto, da cui Message 
Digest 5->versione) che si occupa appunto di fornire un "riassunto 
digitale" di un qualche "oggetto" (per oggetto intendo qualsiasi cosa, 
una variabile, un file etc.).
Non è reversibile semplicemente perchè esistono diversi (molti) 
"oggetti" che producono lo stesso valore della funzione MD5.
A cosa serve allora MD5 ? tipicamente per verificare l'integrità di un 
oggetto.
Un algoritmo di crittografia, invece, si occupa di garantire la 
segretezza di un oggetto per fare in modo che solo chi è autorizzato 
possa accedere all'oggetto tramite un'opportuna procedura.
Nel tuo caso, visto che chiedi se usare MD5 per autenticare, la risposta 
è che si, puoi usarlo, ma ciò ti servirà semplicemente per non 
memorizzare le password in chiaro degli utenti. Tuttavia le password 
transiteranno sulla rete sempre in chiaro.
ciao
Alesi_27

 digitale" di un qualche "oggetto" (per oggetto intendo qualsiasi cosa,
Ti ringrazio ora ho capito :)
Per farlo in PHP occorre soltanto scrivere:
$variabile=MD5($variabile);
e il contenuto sarà diciamo cosi reso "crittografato" giusto? 

 e il contenuto sarà diciamo cosi reso "crittografato" giusto? 
no, usi il termine sbagliato
ciao
Alesi_27

 no, usi il termine sbagliato
ok il termine è sbagliato perchè non so come si dice, appunto l'ho messo tra 
virgolette, però l'istruzione è giusta? 

XwB ha scritto:

Mettiamola così...15-20 anni fa c'era l'msx 2.0... che si programmava 
scrivendo una serie di numeri....sequenze di numeri...molto vicino al 
linguaggio macchina...alla fine della riga di numeri produceva un numero 
di checksum...che verificava la linea di numeri immessi...gli algo di 
hashing non fanno altro che controllare attraverso una loro logica i 
bytes del file...restituendoti un codice...nel caso tu modificassi quel 
file anche di un byte...farebbe cambiare l'hash...ma niente viene 
criptato...è solo un algoritmo di verifica "VERIFICA"....,...mentre i 
vari a 128bit di criptazione e così via sono appunto per codificare e 
decodificare una serie di bytes modificando il contenuto attraverso la 
logica dell'algoritmo che poi verrà ricomposto.
Pensa se devi trasferire un dato che essendo troppo grande viene diviso 
in pacchetti più piccoli, alla fine c'è un qualcosa che andrà a 
verificare con un hash...se al completamento del dato tutti i pacchetti 
originari sono stati trasferiti senza errori e sistemati come 
nell'originale..ok...la verifica di partenza e arrivo porta lo stesso 
hash...se un pacchetto viene trasferito male...avrà all'interno non so 
degli errori, sarà vuoto...ed alla verifica di un hash (un controllo) 
sarà trovato e sistemato se possibile...magari verrà chiesto di mandare 
nuovamente quel pacchetto danneggiato.
-- 
Bye Folks, Sayonara yo.
www.nyoworks.com
 - Work & Fun
www.nyosources.com
 - Fun Only
Cambiare gli zeri con la lettera "o" per scrivermi.
Ryoma Echizen: "Mada mada dane" - "Never Give Up"

 criptato...è solo un algoritmo di verifica "VERIFICA"....,...mentre i 
Volendo fare i pignoli, gli algoritmi di hash non verificano niente.
Gli algoritmi di checksum sono fatti per verificare i dati immessi o
trasferiti.
Gli algoritmi di hashing servono per posizionare i valori in una tabella
di hash, tipicamente per accelerare le ricerche in un database o roba
simile.
Le funzioni di checksum sono fatte solo per verificare la correttezza
dei dati, senza altre pretese, mentre le funzioni di hashing hanno anche
la caratteristica di generare risultati ben sparsi, senza creare
accumuli, quindi riducendo al minimo le collisioni.
Proprio questa caratteristica li ha portati ad essere usati come
algoritmi di crittazione non reversibili, per usare termini non
perfettamente adeguati.
Bye.

 perfettamente adeguati.
-_-  ^^'...che significato ha la definizione di criptazione non reversibile?


perfettamente adeguati.
Ohhhhhhhhhhhh è questo che voglio sapere, tutti parlano di questo MD5 come 
un metodo di crittazione e molti lo usano a questo scopo, io per migliorare 
i miei lavori avevo pensato di usarlo visto che basta solo un istruzione... 
però fatemi sapere se l'istruzione che ho scritto è giusta. Grazie

XwB ha scritto:

l'md5 nello specifico serve solo per verificare l'integrità tra dati in 
entrata ed uscita non cripta niente...poi non so se nel php (che non 
conosco) viene utilizzato per far altro, magari insieme ad altre funzioni.


 che significato ha la definizione di criptazione non reversibile?
Crittare significa nascondere, no? (non ho fatto ne` greco ne` latino, a
scuola).
Quindi significa nascondere senza possibilita` di scoprire.
Da un valore hash non hai la possibilita` di risalire all'informazione
che l'ha generato, se non applicando la stessa funzione a infiniti input
e confrontandoli con il valore hash, esattamente quello che si fa con le
password.
La stessa funzione crypt(), usata da qualche decina di anni in Unix per
crittare le password, non e` reversibile.
Quindi md5("valore") puo` essere usato abbastanza efficacemente per
crittare le password e infilarle nel database, ed e` giusta la sintassi
di XwB.
Non puo` essere usato per crittare dati che devono essere recuperati,
quindi non puoi usarla per inviare la password all'utente, perche` non
potra` recuperarla. Per questo esistono algoritmi a chiave pubblica e/o
privata.
Bye.

 conosco) viene utilizzato per far altro, magari insieme ad altre funzioni.
Facendo una googlata ho visto comunque che entrano a far parte dei 
processi di criptografia ma vengono utilizzare come elementi di 
verifica, di autenticazione...ma non di criptazione vera e propria...
ora mi nasce la curiosità delle applicazioni fuori dall'ambito di check 
dei dati...


 privata.
Si perfetto, non mi ero mai posto il problema perchè ho visto gli hash 
soltanto nel trasferimento di dati... non nella protezione di password 
in questa maniera... infatti io parlavo di confronto di dati...altro 
settore.


 dei dati...
Era proprio quello che cercavo di capire :) Cmq grazie ad entrambi per 
avermi spiegato un pochino le cose come stanno, perchè può sembrare un 
concetto semplice ma non lo è molto, proprio per il fatto che ovunque se ne 
parla come metodo di criptazione, anche se forse si abusa di questo termine, 
qui invece nel NG tutti dicevano che sbagliavo (in effetti era giusto) però 
non capivo da una parte leggevo una cosa qui un altra stavo iniziando ad 
avere problemi esistenziali :P
Infine si è risolto tutto... :)
Cmq grazie a tutti! 

XwB ha scritto:

E' esatto quello che dice Alessandro, perchè lui fa un discorso di 
convertire attraverso md5 una stringa che può essere vista soltanto 
dalla propria chiave di criptazione...mentre io facevo un discorso di 
verifica dei dati...dove l'md5 viene utilizzato solo per stabilire 
l'integrità...ma non modifica nulla.


 
E' proprio quello lo scopo.
Supponiamo 2 entità A e B che vogliano comunicare.
A vuole mandare un messaggio M a B, ma B vuole essere sicuro che il 
messaggio M che riceverà da A sarà integro.
Allora A insieme al messaggio M, genera un "riassunto" R (digest) del 
messaggio M e lo spedisce a B insieme al messaggio stesso.
B quando riceve il messaggio M e il riassunto R da A applica la stessa 
procedura per calcolare il "riassunto" al messaggio M e lo confronta con 
R ricevuto da a A. Se i due riassunti coincidono il messaggio è integro.
Dunque le funzioni hash in questo ambito servono a garantire l'integrità 
del messaggio.
D'altra parte però non garantiscono in alcun modo nè l'autenticazione 
del mittente nè la segretezza del messaggio.
Supponiamo infatti un'altra situazione.
Sia T (trudy) un entità maliziosa che si pone sul canale di 
comunicazione tra A e B (man in the middle attack) e riesca ad 
intercettare il messaggio spedito da A.
T potrà alterare il messaggio, ricalcolarne il riassunto e spedire tutto 
a B, il quale, ignaro, penserà che il messaggio sia integro.
Per risolvere i problemi di autenticazione del mittente, bisogna dunque 
affiancare a le funzioni digest anche la crittografia a chiave pubblica.
A, una volta generato il riassunto cripta messaggio+riassunto con la 
propria chiave privata, dunque B sarà in grado di stabilire con certezza 
che, non solo il messaggio è integro, ma che è stato proprio A a 
inviarglielo. In questo caso parliamo di firma digitale...
Mi fermo qui perchè il discorso è ampio, spero sia sufficiente a fugare 
i primi dubbi.
ciao
Alesi_27

 messaggio M che riceverà da A sarà integro.
PERFETTO!! Ancora più chiaro di prima :)
Però ora ho una domanda da farti, nei siti, non serve la firma digitale 
giusto?
Più che altro da quanto ne sò io serve per documenti amministrativi di 
alcuni enti. 

 Alesi_27
Si avevo visto googlando che i campi di applicazione sono tanti e l'md5 
non è il solo ad esistere ^^, grazie.
Se mi servirà approfondire in qualche modo mi studierò qualcosa, i libri 
ed i tutorial non mancano di certo ;D, per ora era solo una curiosità 
giusto per fare una carrellata (cultura generale)...visto che (a parte 
gli hash del sistema torrent) molto utilizzati nei fansub ed i ricordi 
dei checksum alle elementari...non ho mai visto il resto, ma ormai ho 
altri vocational subjects che vengono prima, anyway thxsomuch.
