【问题标题】:php password_hash() non used charactersphp password_hash() 未使用的字符
【发布时间】:2019-05-02 18:48:37
【问题描述】:

在 PHP 的 password_hash() 中是否有一个不用于生成哈希的字符列表?我正在寻找一种快速/廉价的方式来指示使用哪个专有算法或标准 password_hash() 来生成散列,并且只想将单个字符标记到返回的字符串的前面,但似乎找不到函数未在返回值中使用的字符列表。

【问题讨论】:

  • 不确定为什么要这样做?
  • 在一些应用程序中使用了几种算法,我需要一种方法来快速轻松地识别使用了哪种算法的字符串。并非所有人都使用密码哈希。检查字符串的第一个字符是他们想要的首选方式
  • 这听起来是个非常糟糕的主意。我也不认为有“未使用”的字符。
  • 我同意,但他们想要什么 (smh),希望找到一个来源来验证没有未使用的字符的事情。
  • 让我们回顾一下;您想根据哪些字符不包含它来分配和添加一个字符到密码哈希中。总结您的想法,以便您确定密码使用了哪种类型的哈希/算法?如果你想这样做,我向你保证,如何识别散列字符串中使用的算法的想法是错误的......因为散列的想法是完全隐藏密码是如何生成的任何痕迹,那就是完全不可逆。换句话说,加密是具有或可以具有这种可行性的加密,而哈希与加密不同。

标签: php php-password-hash


【解决方案1】:

请参阅password_hash 的文档:

使用的算法、成本和盐作为散​​列的一部分返回。 因此,验证哈希所需的所有信息都是 包含在其中。这允许 password_verify() 函数验证 哈希不需要单独存储盐或算法 信息。

https://www.php.net/manual/en/function.password-hash.php

您可以使用password_get_info 从哈希中获取此信息:

https://www.php.net/manual/en/function.password-get-info.php

如果提供的值是不受支持/未知的哈希,此函数将返回:

Array ( 
    [algo] => 0 
    [algoName] => unknown 
    [options] => Array ( ) 
) 

【讨论】:

  • 谢谢,抱歉,我已经尝试过该解决方案...如果只有 1 个专有算法,这将有效。未知无助于识别使用了哪种非标准哈希算法。所以一个 char 开关知道我是否应该通过 password_verify() 或其他算法之一推动它。向标准化迈进,但这是一个缓慢的过程,同时也在寻找快速可批准的解决方案。
  • 为什么不直接使用 password_get_info 来识别它是否是非标准哈希,如果是 unknown 然后将其传递给您的旧验证码?
  • 有超过 1 个遗留算法 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多