翻译HmacSHA1校验和生成方法从Java到PHP


Translate HmacSHA1 checksum generating method from Java to PHP

我想把下面的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;
    }
}

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