我正在尝试使用OpenSSL passwd命令对输入的密码进行哈希处理,并将其与存储的哈希进行比较,但哈希函数不一致。第一次生成的哈希与我比较输入时生成的哈希值不同。请注意每次执行哈希时有3种不同的结果:
caseys-air:~ Casey$ openssl passwd -1 MySecret
$1$AlHYrEQp$.c7UTqHiReGXfmNtXOY/T0
caseys-air:~ Casey$ openssl passwd -1 MySecret
$1$6BPglDOg$8KHb5e7ZryYPfYP0Zm8Ra/
caseys-air:~ Casey$ openssl passwd -1 MySecret
$1$vmQtjpWw$yIi6sZt.3XAP7W3e7hBG11
这里发生了什么?系统时间是否用于创建哈希?如何获得一致的哈希值?
答案 0 :(得分:13)
每次调用该命令时,它都会生成一个新的盐并使用该盐进行加密。 MD5的格式为$1$<salt>$<data>
。
要生成用于比较的等效值,必须告诉OpenSSL使用相同的盐。
首先,将现有字符串拆分为$。在第一个字符串中,salt是AlHYrEQp
。
然后:
openssl passwd -1 -salt AlHYrEQp MySecret
我明白了:
[me@foo ~]$ openssl passwd -1 -salt AlHYrEQp MySecret
$1$AlHYrEQp$.c7UTqHiReGXfmNtXOY/T0