如何解决CouchDB 用来加密密码的“简单”哈希算法是什么?
(TL;DR:我在底部有两个问题。)
我一直在查看 CouchDB 的文档以了解其散列算法,但我找不到重要的细节。
我收集的最多信息来自此页面:1.5.2. Authentication Database
这是我的问题:
我在 Cloudant 上的 CouchDB 实例的 _users
数据库中有一堆用户。
我需要能够将用户从 CouchDB 迁移到 Firebase。
Firebase 为此提供 a super-handy-dandy auth migration tool。但是,为了利用其身份验证迁移工具,我需要确切知道 "simple"
password_scheme
正在使用哪种散列算法。
对于 _users 数据库中的每个用户,我都有 "salt"
和 "password_sha"
可用。
鉴于名称 "password_sha"
,我假设 "simple"
"password_scheme"
使用 SHA1
、SHA256
、SHA512
、PBKDF_SHA1
或PBKDF2_SHA256
。
我的数据库中所有用户的文档都没有 "derived_key"
。几乎所有这些都没有定义的 "password_scheme"
。如果它们中的任何一个确实有定义的 "password_scheme"
,则它始终是 "simple"
(并且永远不会是 "pbkdf2"
)。
一旦我确切地知道 CouchDB 使用哪种散列算法,我就需要知道使用了多少轮或迭代来散列密码。
Firebase 文档说:
"您必须提供轮数(对于 SHA1
、SHA256
和 SHA512
,介于 1 和 8192 之间,对于 PBKDF_SHA1
和 {{1} 介于 0 和 120000 之间}}) 用于散列密码。”
但是,我找不到任何关于此的文档/信息。
所以我的问题是:
- CouchDB 对“简单”“password_scheme”使用的哈希算法是什么? (是 SHA1、SHA256、SHA512、PBKDF_SHA1、PBKDF2_SHA256 还是其他?)
- 使用多少轮或迭代来散列密码?
解决方法
我向 a few chats linked in the CouchDB homepage 发布了同样的问题,CouchDB 的所有者 Robert Newson 告诉我以下in Slack:
“简单”是一轮SHA-1(加盐) https://github.com/apache/couchdb/blob/main/src/couch/src/couch_passwords.erl#L26
所以直接回答这两个问题:
- “简单”的 CouchDB 哈希算法使用 SHA1。
- 而且这只是一轮散列。
为了完整起见,这个 simple
方案不是最新版本的 CouchDB(肯定不是 >= 2)使用的。当前的默认值是使用具有以下值的 pbkdf2
:
iterations = 10
keylen = 20
size = 16
encoding = 'hex'
digest = 'SHA1'
如果您需要生成或验证 CouchDB 样式的密码,请参阅 couch-pwd。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。