2013-01-02 4 views
2

PHP에서 16 진수 바이트의 hmac 해시를하려고합니다. 2 개의 해시가 일치하지 않아서 해시 또는 16 진수 표현이 올바르게 이해되는지 확실하지 않습니다.hash_hmac가 16 진수 입력을 처리하는 방법은 무엇입니까?

<?php 
echo bin2hex("\x32\x45\xff\xca".pack("N",1))."\n"; 
echo hash_hmac('sha1', '\x32\x45\xff\xca\x00\x00\x00\x01', 'secret')."\n"; 
echo hash_hmac('sha1', '\x32\x45\xff\xca'.pack("N",1), 'secret')."\n"; 

3245ffca00000001 
3710e984df2fe4c53e0a9760cf0480357c6e431c 
6308db257308f3466430807eb622489c7fff84df 

바이트 나에게 동일한 것 같다 아직 그들이 다른 해시를 줄이 ...

답변

1

무엇이 필요한지 궁금합니다. 단 하나 대신 이중 따옴표를 사용하고 '\x32\x45\xff\xca\x00\x00\x00\x01'에 대한 해시가 모두 잘못되었습니다.

그렇게

echo hash_hmac('sha1', "\x32\x45\xff\xca\x00\x00\x00\x01", 'secret')."\n"; 
echo hash_hmac('sha1', "\x32\x45\xff\xca".pack("N",1), 'secret')."\n"; 

cde1e3710b6265b77fd4ac84293e20d981e92a6a 
cde1e3710b6265b77fd4ac84293e20d981e92a6a 

미묘하지만 사실 올바른 일을 부여 here

0

이것은 제공하기 때문에 귀하의 의견에 :

 echo hash_hmac('sha1', '\x32\x45\xff\xca\x00\x00\x00\x01', 'secret')."\n"; 
     echo hash_hmac('sha1', '\x32\x45\xff\xca'.pack("N",1), 'secret')."\n"; 

hash_hmac d가되는 문자열은

입니다.
 echo '\x32\x45\xff\xca\x00\x00\x00\x01'; // output : \x32\x45\xff\xca\x00\x00\x00\x01 
    echo '\x32\x45\xff\xca'.pack("N",1);  // output : \x32\x45\xff\xca 

그 이유는 답변이 다르게 나옵니다.

+0

적절한 맞춤법 및 문법을 사용하기위한 노력을 확인하십시오 그것을 밖으로 테스트합니다. "ur"및 "ans"와 같은 netspeak를 사용하면 게시물을 * 읽기 어렵게 만듭니다 *. – Charles

관련 문제