Почему этот код сначала кодирует случайную соль в виде шестнадцатеричных цифр? - PullRequest
0 голосов
/ 23 августа 2011

Я смотрю на некоторый существующий код, который генерирует солт, который используется в качестве ввода в хеш аутентификации.

Соль имеет длину 16 байтов и генерируется сначала с использованием генератора случайных чисел ОСчтобы получить 8 байтов случайных данных.

Затем каждый байт в 8-байтовом буфере используется для помещения данных в 2 байта 16-байтового буфера следующим образом:

out[j]   = hexTable[data[i] & 0xF];
out[j-1] = hexTable[data[i] >> 4 & 0xF];

Где out - это 16-байтовая соль, data - начальный 8-байтовый буфер, j и i, очевидно, являются просто инкрементами цикла, а hexTable - это просто массив шестнадцатеричных цифр, т.е. 0 - F.

Почему все это делается?Почему 16-байтовая соль просто не заполняется случайными данными для начала?Зачем проходить этот сложный процесс?

Является ли то, что здесь делается, стандартным способом получения солей?Какая польза и смысл в этом, по сравнению с генерацией 16 случайных байтов?

1 Ответ

1 голос
/ 23 августа 2011

Это просто преобразование ваших 8 случайных байтов в 16 шестнадцатеричных цифр.

Кажется, что кто-то неправильно понял понятие соли или то, что нужно для ввода вашего хеш-кода, и подумал, что он принимает только шестнадцатеричные цифры.

Возможно, соль также хранится где-то, где проще хранить шестнадцатеричные цифры вместо чистых байтов, и программист подумал, что было бы хорошо иметь возможность повторно использовать хранимую соль как есть (т.е. без преобразования ее обратно вбайт первый).

...