Python中PHP对象的相同哈希值

时间:2018-08-13 11:08:53

标签: php python hash compatibility

我有一个小问题: 一方面,我有一个解析器,它接收一个字符串,将其包装到一个PHP对象中,并返回该对象的哈希字符串。 另一方面,新版本的解析器是用Python编写的,新的解析器采用字符串,对其进行哈希处理,然后也作为字符串返回。

还有一个兼容性问题。 作为PHP对象散列的相同字符串和作为字符串散列的返回不同的结果。有没有一种方法可以在python中获取PHP对象,从而获得与PHP解析器完全相同的结果? 这里是一些代码:

PHP:

function num_converter() {
    $string_1 = '1234';
    $string_2 = '567890';

    $hash = String_to_hash::stringHash((object)array(
                        'number'=>$string_1.' '.$string_2,
                        'number2'=>$number3,
                ));
    return array_push($Reply, $hash);
}

这是Python中相同的功能代码:

def num_converter():
    string_1 = '1234'
    string_2 = '567890'
    number3 = digits # type of int

    string_to_hash = string_1 + " " + string_2 + str(number3)
    return hashlib.md5(string_to_hash.encode()).hexdigest().upper()

1 个答案:

答案 0 :(得分:2)

确保使用相同的哈希算法。例如:

PHP

php > echo hash('sha512', 'foo');

结果:f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7

Python

import hashlib
hashlib.sha512(b'foo').hexdigest()

结果:'f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7'