将HmacSHA1校验和生成方法从Java转换为PHP

时间:2015-06-08 21:40:03

标签: java php sha1 translate hmacsha1

我想将以下Java方法转换为PHP:

    private byte[] generateChecksum(byte[] inData){
        try{
            byte[] b_key = secretValue.getBytes("ISO-8859-1");

            SecretKeySpec sha1Key = new SecretKeySpec(b_key, "HmacSHA1");
            Mac mac = Mac.getInstance("HmacSHA1");
            mac.init(sha1Key);

            byte[] sigBytes = mac.doFinal(inData);
            return sigBytes;

        }catch(Exception e){

            log.error("problem create hash: " + e);
            return null;
        }
    }

我提出了以下内容,但它似乎没有产生与Java方法相同的结果:

private function generateChecksum ( $inData ) {

    try {

        $hash = hash_hmac( 'sha1', $inData, $this->secretValue, TRUE );

        return $this->getBytes( $hash );

    } catch (Exception $e) {

        return null;
    }

}

1 个答案:

答案 0 :(得分:0)

我解决了。该问题是由$ inData作为字节数组而不是字符串传递给hash_hmac()引起的。