NodeJS 6 Crypto жалуется на дайджест в сообщении об устаревании?
Я пытаюсь использовать собственный криптографический модуль в своем приложении NodeJS, но получаю сообщение об устаревании:
(узел:26) DeprecationWarning: crypto.pbkdf2 без указания дайджеста не рекомендуется. Пожалуйста, укажите дайджест
Я знаю, что это связано с набором изменений, который ожидает, что дайджест будет продвигаться вперед: https://github.com/nodejs/node/pull/4047
Тем не менее, насколько я вижу, мой код соответствует синтаксису, точно так же, как указано в документации. Кто-нибудь еще видит, что я здесь делаю не так?
function verify (password, expected, callback) {
const combined = Buffer.from(expected, 'base64')
const saltBytes = combined.readUInt32BE(0)
const hashBytes = combined.length - saltBytes - 8
const iterations = combined.readUInt32BE(4)
const salt = combined.slice(8, saltBytes + 8)
const hash = combined.toString('binary', saltBytes + 8)
return crypto.pbkdf2(password, salt, iterations, hashBytes, 'sha512', (err, verify) => {
if (err) return callback(err, false)
return callback(null, verify.toString('binary') === hash)
})
}
Примечание: если это имеет какое-либо значение, это выполняется внутри тонкой версии узла:6
1 ответ
После долгих раскопок я наконец понял это. Это не имеет никакого отношения к фрагменту кода выше. Я использую железный модуль, который в настоящее время имеет версию 4.0.0. Текущая опубликованная версия не передает аргумент для дайджеста, который вызывает предупреждение.
Они уже передали код для исправления этого, но он еще не был опубликован. Это должно скоро разрешиться.