0

使用密码生成密码文件时htpasswd -m -c file adminadmin结果如下所示:

cat file  
admin:$apr1$V.aqW878$JCj8ivmSnFp3BnTCtLAuN.

当我尝试使用 node.js 对其进行身份验证时,结果大不相同:

Digest Hex: 21232f297a57a5a743894a0e4a801fc3

我试过遵循这个现有的 StackOverflow 解决方案

new Buffer('21232f297a57a5a743894a0e4a801fc3').toString('base64');
MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM=

所以结果还是错了。

当我将摘要更改为base64结果时:

ISMvKXpXpadDiUoOSoAfww==

我的问题的底线是我没有得到相同的哈希值并且需要帮助。任何建议将不胜感激。

谢谢罗曼

4

1 回答 1

1

好吧,我找到了答案。htpasswd 使用存储在密码字符串中间位的“盐”:

$apr1$V.aqW878$JCj8ivmSnFp3BnTCtLAuN.
Salt: V.aqW878

node-pass 模块给了我正确的线索。见validate_md5。它使用本机 openssl 命令生成盐渍 MD5 哈希。

回想起来,这是有道理的,因为 MD5 不再安全了。这就是我多年来没有使用它并且在这里有点偏离轨道的原因。本质上,任何标记的东西$apr1$都是这样处理的。

于 2013-03-15T07:52:01.343 回答