SHA-1 e codifica Base64

La funzione di hash SHA-1 permette di avere in output un array di byte di dimensione fissa pari a 20. Ricordo che SHA-1 è una funzione di hash a 160 bit con un livello di sicurezza di 80 bit, ben al di sotto di un ipotetico margine di sicurezza posto a 128 bit come da standard. Basterebbero 2^80 operazioni per risalire al messaggio (attacco del compleanno…ma non è cosi semplice). In questo post mostro come la codifica Base64 amplifica il messaggio da 20 a 28 byte.

String testString = "abcdefghilmnopqrst99";
System.out.println("testString.length() = " + testString.length());
byte[] testBase64 = Base64.encodeBase64(testString.getBytes());
for (int i = 0; i < testBase64.length; i++) {
System.out.println("testBase64[" + i + "] = " + testBase64[i] +
  + "; char-->" + (char)testBase64[i]);
}
System.out.println("testBase64.length = " + testBase64.length);

Come sappiamo Base64 codifica i byte in gruppi di 6 bit e aggiunge se necessario il simbolo ‘=’ per ogni coppia di bit necessaria al padding.

20 byte * 8 = 160 bit

160 bit / 6 bit = 26 simboli (per difetto)

26 simboli + 6 bit = 156 bit avanzano 4 bit => 2 bit padding

Quindi avrò 156 + 4 +2 = 162 bit per la codifica in Base64

162 bit / 6 bit = 27 simboli + 1 simbolo per il padding = 28 simboli

Ma un simbolo Base64 non è altro che un carattere ASCII, quindi 28 simboli = 28 byte.

Infatti se osserviamo l’output del codice sopra esposto vediamo che gli utlimi due caratteri (simboli) sono ‘k=’; questo perché 9 = 00001001 ma abbiamo visto che avanzano 4 bit quindi vanno aggiunti a 1001 due bit 00 (1 coppia di bit per il padding implica aggiungere un solo simbolo ‘=’ alla fine dell’ array) per arrivare a 6 bit. In Base64 100100=’k’.

1 Commento »

  1. Manuela detto,

    Luglio 10, 2008 @ 2:52 pm

    ciao,

    so che sono fuori tema, ma hai pensato di iscrivere il tuo blog al bloggatore?

    il sito non è il mio, ma si tratta di un aggregatore di oltre 200 blog di informatica che sta andando alla grande e il tuo blog deve esserci!

    Il link è: http://www.ilbloggatore.com, l’email te l’ho indicata nel commento.

    Aggiungo il tuo blog ai miei preferiti di Firefox.

    Ciao!
    Manuela

Feed RSS dei commenti su questo post · TrackBack URI

Lascia un Commento