Come memorizzare una rappresentazione di stringa esadecimale in C ++ per l'uso in crittografia

-2

Domanda sui compiti a casa

La domanda completa è la seguente:

Supponiamo che ti venga detto che la crittografia del cronometro del messaggio "attacco all'alba" è 09e1c5f70a65ac519458e7e53f36 (le lettere in chiaro sono codificate come ASCII a 8 bit e il testo cifrato dato è scritto in esadecimale). Quale sarebbe la crittografia one time pad del messaggio "attack at dusk" sotto la stessa chiave OTP?

A me sembra che tutto quello che dovresti fare è trovare la rappresentazione esadecimale dell'attacco al crepuscolo, aggiungerlo per attaccare all'alba e poi usare il tasto per convertire l'attacco al tramonto su un valore crittografato. Tuttavia, non so come memorizzare il valore esadecimale in C ++ (o qualsiasi altra lingua). Questo è quello che pensavo avresti fatto: string attackAtDawn = 61747461636b206174206461776e;

    
posta Mike 17.07.2014 - 21:05
fonte

1 risposta

1

Volete ottenere un'immagine chiara di cosa significa "valore esadecimale" rispetto a "stringa esadecimale". Per me, il "valore esadecimale" è un tipo numerico in cui il byte 6f è effettivamente memorizzato sulla macchina come binario 0110 1111 (che è 6f). In molte lingue, incluso C ++, è possibile ottenere questo anticipando "0x" al valore:

unsigned int some_hex = 0x6f;

Considerando che, principalmente per gli scopi di I / O quando si tratta di file leggibili dall'uomo, si utilizzerà una stringa esadecimale che è ASCII / Unicode per ogni cifra 0-9 e a-f, che è ciò che è la "stringa AttackAtDawn". Per la macchina, tuttavia, il valore "6f" è la codifica dei caratteri per la cifra 6 e la lettera f, che dovrebbe essere convertita in una forma numerica come int unsigned per eseguire operazioni matematiche sul valore esadecimale.

    
risposta data 17.07.2014 - 23:50
fonte

Leggi altre domande sui tag