PHP安全哈希

时间:2014-02-05 21:57:36

标签: php

所以我对PHP有一个小问题。我想我已经把foreach循环搞砸了一下。这是代码:

<?php

error_reporting(0);

class Hash{

  public function hashing($password,$hashsum)
  {
      $iter = date('sh');
      $poyl = array($iter,strrev($iter));
      foreach ($poyl as $key) {
        $itg = array('1','2','3','4','5'); # if == any array element
        foreach($itg as $v){
          if ($key == $v){ # has to be checked here
            $algo = 'TIGER128,3';
        } elseif ($key == rand(31,60)){
            $algo = 'HAVAL128,4';
          } # else
        }
      } # foreach
      return hash($algo,$password.strtok($password,'7'));
  }
}

$obj = new Hash();
print $obj->hashing('text',hash($algo,$password.strtok($password,'7')));

我打算在这里实现的目标如下:这应该是一个计算半多态哈希值的类。为了使这种错误的多态性起作用,我需要至少有两种不同的散列算法。 (之后将考虑建立与数据库的依赖关系和相关性)。

所以我的问题是我需要执行一个检查,以确定第一个字符(在这种情况下是整数)是否等于 $ itg 数组中的任何元素(或者如果它是等于任何数字1-30)。如果是这样,算法将 TIGER128,3 ;如果不是(并且日期变量的第一个字符等于31-60的任何值),则应用的算法应为 HAVAL128,4

代码完全搞砸了。我正在使用日期函数来生成整数并在之后比较它们,因为我无法想到任何快速的东西(意味着这将会改变)。

1 个答案:

答案 0 :(得分:0)

如果您只想比较该数组中的内容,可以使用in_array()

$array = array(1,2,3,4);
$str = '1abcdef';
in_array($str[0], $array) // Returns TRUE;

http://uk1.php.net/in_array