python - Erlang 512 哈希与 python 512 哈希不匹配

标签 python hash cryptography erlang sha512

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

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

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

来自在线阅读:

  • $6$ 表示这是一个 512 哈希
  • '5H0QpwprRiJQR19Y' 是散列的盐
  • 在上面的代码中,密码是'example'

我当前的 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>>

我试过操纵返回值,但无法使它们匹配。

最佳答案

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

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

关于python - Erlang 512 哈希与 python 512 哈希不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58124196/

相关文章:

python - 如何获取 SQL 查询的数量?

ruby - 用于 Ruby 哈希的 map_values()?

algorithm - 随机 1 对 1 哈希函数

java - Android AES/CBC/PKCS5Padding 加密

c - 如何在不使用 C 语言中的整数类型的情况下将 2 uint8 模乘一个大数

ios - 在 Objective-C 中使用 CCCryptor 解密在 Go 中使用 CFB 加密的数据

python - 在Tensorflow中构建transform_graph时出错

Python:如何使用 psycopg2 将字符串传递给 postgres 命令

python - Keras 模型多输入 - 类型错误 : ('Keyword argument not understood:' , 'input' )

python - 如果 name = hash 则自动填充