我在python api上使用passlib
pbkdf2_sha512
来验证用户密码。据我所知,算法需要的输入字符串必须遵循以下格式:$pbkdf2-digest$rounds$salt$checksum
Node中是否有一个库可以生成我的sha512密码并以这种格式返回它,或者我需要编写自己的算法来以这种方式设置格式并选择随机的盐,回合等。
有关python library的更多信息。
我试图重现Node中python库生成的字符串:
function sha512(password) {
const salt = crypto.randomBytes(16);
const rounds = 29000;
// I used sha256 for testing purpose, it shouldn't matter for the sake of the result
const passwordHashed = crypto.pbkdf2Sync(password, salt, rounds, 256,
'sha256').toString('Base64');
console.log(passwordHashed);
}
我为“密码”生成了一个哈希,我的代码返回了 用Base64编码:
7uLTDHjAhQX0yIqXptXuhHIygNogaZRcDqa7ckc0XCj4FAAW29V6KzIzRuJKJoTqN9xjfGOyGZ21X0J1vemQLThcnIXgwt2E84VrW/ai+BdVaUPHiT8J0mutOM9j52l1fFLT7rl5Rmr8qiyGzBaWj6i0sRkrdba9IVDHr1HxGAoM8qEuCSHgKsBVVX65+1pf2DDEUsgGShzE31xiuwF8UpHwq5Cxhiq8ER5xQnKj/j3mG/AAoylPVu30Jd4aFNoRi2Lfhk+6nFwLS0R222R38Jio93qzVD0Nb8kjXqjoXIYxTY6ZOumlsXWR/NmhTQi31x6JggoO1Z1jSFnCVUUd2Q==
并且在熟练的base 64中使用python库生成时
98jZicV16ODfEsEZeYPGHU3kbrUrvUEXOPimVSQDD44
这显然是更小的String。该库提到它们的编码是非常基本的,除了交换了一些字符外,但此结果对我来说似乎不太有意义。 (我使用了与图书馆网站示例中相同的盐大小和相同的轮数)