Buongiorno,

avrei bisogno di un consiglio per implementare l'algoritmo SHA1 in Java.

Prendo come esempio la String "ciao"

Il primo step è questo:

decodififare una String in bit (o byte)

Da "ciao" ottengo

"c" = 99 = 01100011
"i" = 105 = 01101001
"a"= 97 = 01100001
"o" = 111 = 01111001

Questa è la rappresentazione decimale e binaria dei caratteri della String "ciao".

Dovrei ora, a partire dal carattere "c" fino al carattere "o", dovrei "affiancare" le sequenze di bit ottenute.

Dunque ottenere questo:

01100011 01101001 01100001 01111001

Cioè. per quanto riguarda la parola "ciao", una sequenza di 32 bit.

A questo punto, devo

a) inserire un bit 1 a destra della sequenza per ottenere:

01100011 01101001 01100001 01111001 1

Come posso riuscirci?

Nel senso: inserire un bit = 1 a destra di una sequenza di bit corrisponde ad effettuare uno shift a destra di una posizione e aggiungere 1.

Di seguito però dovrei aggiungere alla sequenza ottenuta un numero di bit = 0 tali che il numero totale di bit della sequenza ottenuta risulti uguale a

448 mod 512...

Se ho capito a livello pratico a cosa corrispondono queste operazioni, non so con che tipo di dati operare:

un int in java corrisponde a 32 bit, un long, se non ricordo male, a 64 bit.

Io qui devo lavorare con blocchi lunghi 512 bit... o 164 byte fate vobis.

Come mi conviene operare per dati come questi?