OTP o S / KEY - Conversione di stringa esadecimale in 6 parole leggibili
-
21-09-2019 - |
Domanda
Come si vede nella RFC2289 (S / KEY), c'è una lista di parole che deve essere utilizzato quando si converte la stringa esadecimale in un formato leggibile.
Come potrei fare per farlo?
Il RFC cita:
La password one-time è quindi convertito, e accettato come un sequenza di sei brevi (da 1 a 4 lettera) Parole inglesi. Ogni parola è scelta da un dizionario di 2048 parole; alle 11 bit per parola, tutte le password di una volta possono essere codificati.
Per saperne di più: http://www.faqs.org/rfcs/rfc1760.html#ixzz0fu7QvXfe
Questo significa convertire un esagono in decimale e quindi usando come un indice per un array di parole. L'altra cosa che potrebbe essere utilizza una codifica di testo ad esempio 1111 potenza pari cane in UTF-8 encoding
grazie in anticipo per il vostro aiuto!
Soluzione
Non c'è bisogno di convertire in decimale. Se il valore esadecimale è una stringa, basta convertirlo in un numero (ad esempio, con Integer.valueOf(value, 16)
). Quindi utilizzare questo numero per cercare la parola. Se è possibile memorizzare l'intero dizionario nella memoria, utilizzare il numero di come l'indice. Se non è possibile memorizzare nella memoria, usarlo per controllare quanto lontano nel file dizionario si guarda (se ogni elemento si trova su una riga separata, letto che molte linee nel file). Se hai un database da qualche parte, utilizzare il numero come chiave della tabella e selezionare con il tasto.