Oppure

Loading
04/07/10 19:13
a_butta
Ciao a tutti.
Sono intenzionato ad avvicinarmi allo studio di algoritmi di criptazione. Da qualche giorno ho un po' visto alcune codifiche come md5 e sha1 ma tutto a livello molto elementare, senza indagare nell'algoritmo vero e proprio.
Quello che voglio chiedervi è un consiglio da dove iniziare e su cosa a studiare questi algoritmi, se mi servono altri tipi di base o basta una discreta (ma non potente) conoscenza della matematica (quella di 4a scientifico pni).
Mi chiedevo: ci sono dei libri che trattano lo studio di algoritmi, come si svolgono, ma anche dalle basi (cioè cosa sono e come funzionano)... insomma un po' di tutto questo.
Grazie mille:k:
aaa
05/07/10 5:52
HeDo
Postato originariamente da a_butta:

Ciao a tutti.
Sono intenzionato ad avvicinarmi allo studio di algoritmi di criptazione. Da qualche giorno ho un po' visto alcune codifiche come md5 e sha1 ma tutto a livello molto elementare, senza indagare nell'algoritmo vero e proprio.
Quello che voglio chiedervi è un consiglio da dove iniziare e su cosa a studiare questi algoritmi, se mi servono altri tipi di base o basta una discreta (ma non potente) conoscenza della matematica (quella di 4a scientifico pni).
Mi chiedevo: ci sono dei libri che trattano lo studio di algoritmi, come si svolgono, ma anche dalle basi (cioè cosa sono e come funzionano)... insomma un po' di tutto questo.
Grazie mille:k:


prima di compare un libro (che cmq consiglio), leggi approfonditamente gli articoli della wiki in inglese, sono ben fatti:

en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…
Ultima modifica effettuata da HeDo 05/07/10 5:53
aaa
05/07/10 9:59
netarrow
E' evidente che se vuoi studiare "gli algoritmi di criptazione" devi studiare anche "gli algoritmi" in generale.

Ti consiglio di leggere "Introduzione agli algoritmi e strutture dati", fra gli autori c'è anche un certo Rivest, co-creatore del RSA.

aaa
06/07/10 9:50
a_butta
Postato originariamente da netarrow:

E' evidente che se vuoi studiare "gli algoritmi di criptazione" devi studiare anche "gli algoritmi" in generale.

Ti consiglio di leggere "Introduzione agli algoritmi e strutture dati", fra gli autori c'è anche un certo Rivest, co-creatore del RSA.



sisi certamente il mio interesse è orientato alla criptazione (anche perchè è su questa branche che vorrei preparare la maturità;) ma ovviamente devo iniziare a studiare gli algoritmi in generale...
Grazie mille del consiglio...
aaa
06/07/10 15:30
a_butta
Postato originariamente da HeDo:
prima di compare un libro (che cmq consiglio), leggi approfonditamente gli articoli della wiki in inglese, sono ben fatti:

en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…
en.wikipedia.org/wiki/…


mi sto studiando l'algoritmo dell'md5 da wikipedia in inglese. Grazie del consiglio perchè è fatto veramente bene.

Sto cercando di sviluppare una funzione che calcoli l'hash, però ho incontrato già dall'inizio un problema: come trovo la lunghezza in bit del messaggio immesso?
Per adesso sto scrivendo in php (so che c'è già la funzione md5() ma a me interessa proprio crearla da 0); c'è una funzione in php che restituisca la lunghezza in bit della stringa?
o meglio: esiste un qualche ragionamento, passaggio o cosa del genere che mi permetta di calcolarla qualsiasi linguaggio di programmazione io stia usando?

grazie mille
aaa
06/07/10 16:22
HeDo

molto semplicisticamente mi verrebbe da dire

nbit = lunghezzatesto * 8

considerando che un char è 1 byte che è 8 bit :)
aaa
06/07/10 18:08
a_butta
Postato originariamente da HeDo:


molto semplicisticamente mi verrebbe da dire

nbit = lunghezzatesto * 8

considerando che un char è 1 byte che è 8 bit :)


è vero! Però a me è venuto un altro dubbio (molto probabilmente sto facendo un'enorme confusione): in wikipedia c'è scritto:
MD5 processes a variable-length message into a fixed-length output of 128 bits.


l'output md5() di una qualsiasi stringa produce una sequenza di 32 caratteri, che moltiplicati per 8 danno 256bit. Ho ragionato: presuppongo che wikipedia non dica boiate, così ho pensato che la stringa che dà in output l'md5 è esadecimale, e so inoltre che una cifra esadecimale è espressa in 4 bit (F = 1111). Dunque qui si tratta non tanto di stringa, quanto proprio un numero esadecimale che covertito in binario dia proprio 32*4, cioè 128 bit.
Allora non riesco a capire: quando io passo alla funzione di criptazione una stringa, metti md5('PIPPO') io devo considerarla nella sua scrittura esadecimale, oppure devo considerare ogni carattere normalmente come un pacco di 8bit?

Inoltre tu mi hai detto 1 carattere = 8 bit. Tuttavia tutte le funzioni bitwise che utilizza php, a quanto ho capito (posso sbagliarmi e chiedo scusa per l'ignoranza) lavorano codificando la stringa in ASCII, ma l'ascii prevede una scrittura a 7 bit per ogni carattere. Mi manca qualcosa?
Chiedo scusa se la mia domanda può essere considerata banale ma sono veramente proprio all'inizio con queste cose, quindi spero possiate perdonare la mia ignoranza...
Grazie mille dell'aiuto! :hail:
Ultima modifica effettuata da a_butta 06/07/10 18:13
aaa
06/07/10 19:27
HeDo
Postato originariamente da a_butta:
è vero! Però a me è venuto un altro dubbio (molto probabilmente sto facendo un'enorme confusione): in wikipedia c'è scritto:
MD5 processes a variable-length message into a fixed-length output of 128 bits.

l'output md5() di una qualsiasi stringa produce una sequenza di 32 caratteri, che moltiplicati per 8 danno 256bit. Ho ragionato: presuppongo che wikipedia non dica boiate, così ho pensato che la stringa che dà in output l'md5 è esadecimale, e so inoltre che una cifra esadecimale è espressa in 4 bit (F = 1111). Dunque qui si tratta non tanto di stringa, quanto proprio un numero esadecimale che covertito in binario dia proprio 32*4, cioè 128 bit.
Allora non riesco a capire: quando io passo alla funzione di criptazione una stringa, metti md5('PIPPO') io devo considerarla nella sua scrittura esadecimale, oppure devo considerare ogni carattere normalmente come un pacco di 8bit?
Inoltre tu mi hai detto 1 carattere = 8 bit. Tuttavia tutte le funzioni bitwise che utilizza php, a quanto ho capito (posso sbagliarmi e chiedo scusa per l'ignoranza) lavorano codificando la stringa in ASCII, ma l'ascii prevede una scrittura a 7 bit per ogni carattere. Mi manca qualcosa?


beh, ti sfugge che non sono solo stringhe ad essere "criptate" con md5, ma anzi la maggior parte delle volte sono dati binari. Semplicemente non porti il problema, ogni carattere è composto da 8 bit, fine :)


Chiedo scusa se la mia domanda può essere considerata banale ma sono veramente proprio all'inizio con queste cose, quindi spero possiate perdonare la mia ignoranza...
Grazie mille dell'aiuto! :hail:

non ti preoccupare, apprezzo molto più queste domande di "teoria" anche se le risposte sono facilmente reperibili di quelli che non fanno manco lo sforzo di cercare e documentarsi :)
aaa