OpenSSL EVP aes_256_cbc Dimensione vettoriale inizializzazione

9

Sto guardando gli esempi di librerie crittografiche (programmate in c) fornite per OpenSSL EVP su OpenSSL Wiki .

Il loro esempio per un vettore di inizializzazione a 128 bit è il seguente:

/* A 128 bit IV */
unsigned char *iv = (unsigned char *)"01234567890123456";

0-9 - > 10 caratteri
0-6 - > 7 caratteri
Totale: 17 caratteri

Ogni char è 1 byte (8 bit) sul mio sistema. Quindi l'IV è 8 * 17 = 136 bit. Perché stanno dicendo che la dimensione IV totale è di 128 bit? Si tratta di un errore off-by-1 o mi manca qualcosa?

Risposta: Stephen aveva ragione. Questo è stato molto semplice da controllare, ho appena cambiato la IV per essere la lunghezza corretta e il testo cifrato è rimasto lo stesso. Quindi, il byte extra non viene utilizzato nell'algoritmo e qualcuno ha avuto un conteggio errato.

Predefinito IV:

/* A 128 bit IV */
unsigned char *iv = (unsigned char *)"01234567890123456";

Output:

Ciphertext is:
0000 - e0 6f 63 a7 11 e8 b7 aa-9f 94 40 10 7d 46 80 a1 .oc.......@.}F..
0010 - 17 99 43 80 ea 31 d2 a2-99 b9 53 02 d4 39 b9 70 ..C..1....S..9.p
0020 - 2c 8e 65 a9 92 36 ec 92-07 04 91 5c f1 a9 8a 44 ,.e..6........D

Nuovo IV:

/* A 128 bit IV */
unsigned char *iv = (unsigned char *)"0123456789012345";

Esegui make di nuovo per creare il programma.

Output:

Ciphertext is:
0000 - e0 6f 63 a7 11 e8 b7 aa-9f 94 40 10 7d 46 80 a1 .oc.......@.}F..
0010 - 17 99 43 80 ea 31 d2 a2-99 b9 53 02 d4 39 b9 70 ..C..1....S..9.p
0020 - 2c 8e 65 a9 92 36 ec 92-07 04 91 5c f1 a9 8a 44 ,.e..6........D

    
posta peevishprogrammer 24.02.2017 - 01:20
fonte

0 risposte

Leggi altre domande sui tag