【问题标题】:Mismatch between ironclad and couch pbkdf2 hashingIronclad 和 couch pbkdf2 散列之间的不匹配
【发布时间】:2023-03-13 06:16:01
【问题描述】:

我的问题背景: Linode KVM 实例上的 Fedora 22 64 位,CouchDB v.1.6.1,SBCL 1.2.16

CouchDB:我创建了一个密码为"testpass" 的用户。 _users 数据库中相应创建的文档包含(以及其他内容):

{ ...
  "password_scheme": "pbkdf2",
   "iterations": 10,
   "name": "test",
   "roles": ["reader"],
   "type": "user",
   "derived_key": "7b0cad0d2762b448b88684332e68988e801195ad",
   "salt": "2e4bcf85f39279ab9d1e1336a00dce0e"
...}

所以在我做的同一台机器上的 lisp repl 中:

REPL>(in-package :ironclad)
REPL>(byte-array-to-hex-string 
         (pbkdf2-hash-password 
             (ascii-string-to-byte-array "testpass") 
             :salt (hex-string-to-byte-array "2e4bcf85f39279ab9d1e1336a00dce0e")
             :digest 'sha1 
             :iterations 10))

"ce55610fe10bc49703f0df95adb6c9c9c71e3f8e"
REPL>

所以 Ironclad 的输出 "ce55610fe10bc49703f0df95adb6c9c9c71e3f8e" 与沙发上的 "7b0cad0d2762b448b88684332e68988e801195ad" 不匹配。

我已经在 Ironclad 中尝试了所有支持的摘要,但没有运气。有人对可能出现的问题有任何想法吗?

【问题讨论】:

    标签: couchdb common-lisp pbkdf2 ironclad


    【解决方案1】:

    很简单:CouchDB 使用"2e4bcf85f39279ab9d1e1336a00dce0e" salt 作为二进制字符串,而您使用hex-string-to-byte-array 将其转换为字节数组。解开它会给你不同的盐。很容易检查:

    (node1@127.0.0.1)1> couch_passwords:pbkdf2(<<"testpass">>, <<"2e4bcf85f39279ab9d1e1336a00dce0e">>, 10).
    <<"7b0cad0d2762b448b88684332e68988e801195ad">>
    (node1@127.0.0.1)2> couch_passwords:pbkdf2(<<"testpass">>, <<50,101,52,98,99,102,56,53,102,51,57,50,55,57,97,98,57,100,49,101,49,51,51,54,97,48,48,100,99,101,48,101>>, 10).
    <<"7b0cad0d2762b448b88684332e68988e801195ad">>
    (node1@127.0.0.1)3> couch_passwords:pbkdf2(<<"testpass">>, <<46,75,207,133,243,146,121,171,157,30,19,54,160,13,206,14>>, 10).
    <<"ce55610fe10bc49703f0df95adb6c9c9c71e3f8e">>
    

    【讨论】:

    • Ironclad 需要无符号字节 8 的数组,那么我应该如何给它喂盐,即使那样,它的输出仍然是一个字节数组,我需要以某种方式与沙发的二进制字符串 derived_key 进行比较.有什么想法吗?
    • 如何获取盐的每个字符的字节码并从中构建无符号的 8 字节数组?我用一个例子更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2017-12-16
    • 2015-04-25
    相关资源
    最近更新 更多