Ho letto la documentazione che mi ha fornito, fortunatamente avevo già materiale che mi dava una bella mano.
Ho terminato l'implementazione dell'algoritmo, ma semplicemente il risultato non è quello giusto.
Il passaggio carine si ha a mio avviso nel momento in cui opero sull'array di byte ottenuto in questa maniera
codice:
byte[] b = new String("a").getBytes("utf-8");
L'algoritmo SHA1 prevede innanzitutto di processare una sequenza di bit.
Nel mio caso, essendo la lunghezza del base block da processare di 512 bit, uso un array di 64 Byte.
I pirmi elementi di tale array vanno valorizzati con i byte corrispondenti alla stringa da processare. A tale sequenza di bit così ottenuti va aggiunto un 1 a destra.
Io ho pensato di ottenere questo così (prendo in esame la stringa "a")
codice:
byte[] to_convert = new String ("a").getBytes("utf-8");
byte[] theByteArray = new byte [NUM_BYTE]; //array di 64 elementi
/*inizializzo il primo elemento di theByteArray con l'unico elemento di to_convert*/
theByteArray[0]=to_convert[0];
In questo modo, nel primo byte di theByteArray è presente il byte 97. A questo faccio seguire, come secondo elemento di theByteArray, il byte MIN_BYTE_NUM = -128
codice:
theByteArray[1]=MIN_BYTE_NUM;
Volevo chiedere dopo questa dissertazione noiosa:
riesco, con questo esempio, a ottenere che il primo elemento dell'array sia
01100001 //97 in binario
e che il secondo sia
10000000 //-128 in binario???
Questo perchè, se la risposta è si, altri passaggi sono sbagliati!
Naturalmente, sono ben accette tutte le possibili osservazioni di chiunque per migliorare!
Grazie dell'attenzione, buona giornata a tutti.