【问题标题】:crypt module not outputting a SHA512 hash as expectedcrypt 模块未按预期输出 SHA512 哈希
【发布时间】:2020-02-08 14:19:57
【问题描述】:

我目前正在使用 Python 中的 crypt 模块尝试通过以下方式创建 SHA512 哈希。

当我从 SO post 运行以下代码行时:

>>> import crypt
>>> crypt.crypt('password', '$6$' + 'salt1234')

而不是看到盐的以下输出,然后是每个this SO post 的 SHA512 哈希:

'$6$salt1234$Zr07alHmuONZlfKILiGKKULQZaBG6Qmf5smHCNH35KnciTapZ7dItwaCv5SKZ1xH9ydG59SCgkdtsTqVWGhk81'

我得到以下信息:

$6FMi11BJFsAc

下面是截图为证:

为什么我无法获得我期望的 SHA512 哈希?

【问题讨论】:

    标签: python security hash sha crypt


    【解决方案1】:

    来自https://docs.python.org/3/library/crypt.html

    该模块实现了crypt(3) 例程的接口,它是一种基于改进的DES 算法的单向散列函数;有关详细信息,请参见 Unix 手册页。 […]

    请注意,此模块的行为取决于运行系统中 crypt(3) 例程的实际实现。因此,当前实现中可用的任何扩展也将在此模块上可用。

    from the documentation of the function itself(强调我的):

    可选的盐是从mksalt() 返回的字符串,crypt.METHOD_* 值之一(虽然并非所有平台都可用

    您所在平台的crypt 可能不支持 SHA-512。您可以通过检查crypt.METHOD_SHA512 是否在crypt.methods 中来确认这一点。

    >>> crypt.methods
    [<crypt.METHOD_CRYPT>]
    >>> "\N{CRYING FACE}"
    '?'
    

    可以查看a description of SHAcrypt 并基于它进行实现,或者use someone else’s

    from passlib.hash import sha512_crypt
    sha512_crypt.hash('password')
    

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2019-05-08
      相关资源
      最近更新 更多