slappasswd生成SHA256哈希异常:与openssl及旧版本slapd不一致问询
slappasswd 2.5.13生成的SHA256哈希与其他程序/版本不一致的原因
在Ubuntu 22.10使用slapd 2.5.13+dfsg-1ubuntu1时,slappasswd生成的SHA256密码哈希与openssl dgst结果不一致:
$ slappasswd -s secret -h '{SHA256}' -o module-path=/usr/lib/ldap -o module-load=pw-sha2 {SHA256}WIrrpN3OjEVOUf6yrH1j+o+ODuUuNBo979Od4UXnu54= $ echo -n "secret" | openssl dgst -sha256 -binary | openssl enc -base64 K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=
但SHA1哈希两者结果一致:
$ slappasswd -s secret -h '{SHA}' -o module-path=/usr/lib/ldap -o module-load=pw-sha2 {SHA}5en6G6MezRroT3XKqkdPOmY/BfQ= $ echo -n "secret" | openssl dgst -sha1 -binary | openssl enc -base64 5en6G6MezRroT3XKqkdPOmY/BfQ=
而Ubuntu 20.04的slapd 2.4.49+dfsg-2ubuntu1.9版本中,slappasswd生成的SHA256哈希与openssl结果一致:
$ slappasswd -s secret -h '{SHA256}' -o module-path=/usr/lib/ldap -o module-load=pw-sha2 {SHA256}K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols= $ echo -n "secret" | openssl dgst -sha256 -binary | openssl enc -base64 K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=
原因分析
- 加盐哈希的默认行为变更
slapd 2.5版本对{SHA256}格式的处理逻辑做了调整:默认会为生成的SHA256哈希添加随机盐值,而slapd 2.4版本以及openssl执行的命令都是直接计算无盐的SHA256哈希,这是结果不一致的核心原因。 - SHA1无差异的原因
对于{SHA}格式,slapd的新旧版本都保持了无盐哈希的行为,所以和openssl dgst -sha1的结果始终一致。 - 验证无盐哈希的方法
若要让slapd 2.5生成与openssl一致的无盐SHA256哈希,可显式指定空盐值:
执行后生成的哈希会与slappasswd -s secret -h '{SHA256}' -o module-path=/usr/lib/ldap -o module-load=pw-sha2 -o salt=openssl结果完全匹配。
内容的提问来源于stack exchange,提问作者Ralf Hildebrandt
相关产品推荐
相关产品推荐

