散列 - 始终为给定的用户ID对获取唯一散列

时间:2011-09-01 09:40:32

标签: php hash

  

可能重复:
  Generate a unique value for a combination of two numbers

是否有办法散列两个用户ID(整数),并始终为给定的一对用户ID获取唯一的哈希值?

例如:

a = hash( x , y );

b = hash( y , x );

在上面的例子中,对于INT(11)(MySQL)范围内任何给定的id对,a和b必须始终是等效的。

普通PHP是编程环境。

任何建议都欢迎你们......

2 个答案:

答案 0 :(得分:4)

对数字求和不会产生唯一的哈希值。例如,1 + 3 == 2 + 2。这样做:

function myHash( $id1, $id2 ) {
    $ids = array( $id1, $id2 ); // or func_get_args() to support variable number
    sort( $ids );
    return md5( implode( '-', $ids ); // md5() == any other hashing function
}

myHash( x, y ) == myHash( y, x );

答案 1 :(得分:0)

使用http://php.net/manual/en/function.md5.php

像这样: $hash = md5(sprintf("%05d/%05d", $id1, $id2));