将python uuid哈希代码转换为php

时间:2015-02-20 13:52:23

标签: php python sha

我正在尝试将大量的python代码移植到php中 - 这样做我发现这一行我找不到相应的内容:

    instance = resp.get(
        'instance',
        uuid.uuid4().hex.encode('utf-8')
    )

    sha = hashlib.sha1(
        self.username.encode('utf-8') + instance
    )
    self.params.update({'id': sha.hexdigest().upper()})

我发现https://github.com/ramsey/uuid生成了uuid4并试图模仿上面这样:

    if (isset($resp['instance']))
    {
        $instance = $resp['instance'];
    }
    else
    {
        $uuid4 = Uuid::uuid4();
        $instance = utf8_encode(dechex($uuid4->toString()));
    }

    $sha = sha1(utf8_encode($this->username) . $instance);

    $this->params['id'] = strtoupper($sha);

这似乎没有提供相同的结果。任何人都可以帮助我在PHP中生成与python相同的结果。感谢。

1 个答案:

答案 0 :(得分:0)

事实证明,dechex函数与python的hex不同。 在这种情况下,十六进制函数的结果是从uuid删除破折号。用str_replace解决了它。