Erlang 512 哈希不匹配 python 512 哈希

Erlang 512 hash not matching python 512 hash

我正在尝试在 Erlang 中复制以下 python 代码:

python -c "import random,string,crypt;
print crypt.crypt('example', '$6$5H0QpwprRiJQR19Y$')"

OUTPUT: H0QpwprRiJQR19Y$B8EBtKxKU4Poxi.qLsL/t7uoriHX/cdnn9kT7kTsUIvwKPR6oJLOl8NAH8vPT.BNPdEY7a4.rz8YhziecWQ6I/

来自在线阅读:

我当前的 erlang 代码如下:


crypto:hash(sha512, "example5H0QpwprRiJQR19Y")

产生:

<<167,181,70,20,213,141,24,28,86,204,170,121,182,75,217,3,51,222,3,209,44,43,34,243,130,214,247,156,149,150,162,81,200,207,103,85,60,202,37,189,30,25,128,221,61,79,146,86,225,126,35,85,4,161,156,152,8,6,90,17,207,229,235,241>>

我试过操纵 return 但无法使它们匹配。

我在 Erlang 中找不到 crypt 的实现,只有 this one 等包装器。一般来说,像 C 这样的低级语言比像 Erlang 这样的高级语言更擅长重复散列的任务。所以用这个保证兼容性,比自己实现更快。

如果你想自己实现,那么你可以使用规范here。请注意,这是最难理解和实施的密码哈希之一,因此这可能不适合外行。您最好从另一种语言中获取现有代码并进行翻译。