我们的鸽舍和电子邮件服务器使用SHA1摘要对用户进行身份验证.我们无法真正更改当前摘要,因为我们有这么多用户,并且不希望让他们重新创建所有密码.
我们想要一种更简单的方法来创建一个摘要,以便为我们的用户输入数据库(最终创建一个Web界面,以便他们自己更改).
dovecotpw -s SHA1
我们想切换,因为dovecotpw不是可编写脚本的(至少不是没有使用expect或类似的东西).但是,我尝试过的所有东西(sha1sum,MysqL的sha1,python的hashlib.sha1)都会产生与dovecotpw命令截然不同的东西.
下面是单词:password的各种命令的输出
dovecotpw -> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
sha1sum -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
python hashlib.sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
MysqL sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
所以看起来dovecot是以不同方式做事的人.不幸的是,这是我需要它创建的那个.
任何想法是如何从脚本命令获得dovecot sha1?
谢谢.
解决方法:
您需要对二进制摘要进行base64编码以使其符合其格式.
>>> import hashlib
>>> import base64
>>> p = hashlib.sha1('password')
>>> base64.b64encode(p.digest())
'W6ph5Mm5Pz8GgiULbPgzG37mj9g='
编辑:顺便说一句,如果您更喜欢从终端/ bash脚本执行此操作,您可以这样做
$echo -n 'password' | openssl sha1 -binary | base64
W6ph5Mm5Pz8GgiULbPgzG37mj9g=
另外,你可以告诉dovecotpw不再给出哈希的六进制,因为它有更多的字符不是全部十六进制[0-9a-f].使用带有=结尾的字符[A-Za-z0-9 /]表明它是哈希的base64转换.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。