Я использую следующие методы, чтобы создать соленый и хэшируются пароль от крипто Lib в nodejs:ОСВ и HASH используя PBKDF2
crypto.randomBytes(size, [callback])
crypto.pbkdf2(password, salt, iterations, keylen, callback)
Для вызова RANDOMBYTES (создание ОСВ), какой размер я должен использовать? Я слышал 128-битные соли, возможно, до 256 бит. Похоже, эта функция использует размер в байтах, так что я могу предположить, что размер 32 (256 бит) достаточен?
Для вызова pbkdf2, что такое большое количество итераций и какая хорошая длина для ключа (keylen)?
Кроме того, для хранения я видел примеры хранения соли, длины, итераций и derviedkey в той же колонке. Я использую пример, отделяющий 4 по ::
, то есть:
salt::derivedKey::keyLength::iterations
Делая это, я могу затем разделить на ::
, чтобы получить 4 значения, так что я могу генерировать производный ключ на основе предоставленного пароля, чтобы увидеть если он совпадает. Правильно ли это это хранить? Или я должен быть немного более «обманчивым» в сочетании этих ценностей?
«Поскольку стандарт PBKDF2 рекомендует соли не менее 64 бит, это отходы для генерации ключей, меньших, чем ваш вход, поэтому используйте как минимум 64 байта». вход соли должен быть длиной всего 8 байтов (64 * бит *), есть ли где-то здесь опечатка? – StrangeWill
@StrangeПожалуйста, да, см. Комментарий Майкла. Но я редактирую свой ответ, чтобы отразить это. –
На самом деле, поскольку мой ответ старый и уже принят, я бы не стал его менять так сильно. Но размеры, выделенные жирным шрифтом в # 1 и # 3, будут изменяться на ** 20 байт ** рекомендуется - PBKDF2 рекомендует 64 бита, поэтому 8 байтов, но соли должны быть как минимум одного и того же размера хеш-функций, поэтому для SHA1 в случае узла. js Crypt, который будет 20 байтов, а SHA256 будет 32 байта. –