如何检查字符串是否是PHP中的有效sha256哈希?

时间:2013-06-01 17:24:10

标签: php encryption hash sha sha256

如何使用PHP识别sha256哈希? 此外,有没有办法确定字符串是否是sha256哈希,即使它是盐渍的?

我不需要知道哈希的真正价值(我知道这是不可能的),但我只需要验证字符串,所以如果字符串是sha256哈希并且我可以以某种方式工作如果不是,那就另辟蹊径。

2 个答案:

答案 0 :(得分:5)

检查散列是否为有效SHA-256散列的唯一方法是检查其中的256位 - 如果是,则是某些输入CAN可能生成该输出。

哈希是一种方式,这意味着我可以给你一个哈希值,你永远不能解密它(这是哈希和加密之间的区别)。这适用于存储密码,以及纯文本值无关的情况。

答案 1 :(得分:1)

我不明白您说的是什么意思:“即使是加盐的”。盐析发生在散列之前,它为彩虹表攻击和在多个站点上使用相同密码的用户提供了一些保护。根据基础,一个简单的正则表达式可以告诉您特定字符串是否为sha256哈希。我认为大多数情况下,我们在base16中遇到哈希,在这种情况下,它将起作用:

   if (preg_match("/^([a-f0-9]{64})$/", $hash) == 1) {
      return true;
   } else {
      return false;
   }
相关问题