Я хотел бы перевести следующий метод 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 () в виде байтового массива вместо строки.
Других решений пока нет …