Я пытаюсь построить хэш SHA256 из строки, используя hash_hmac
$key = chr(hexdec('17'));
// value of key is blank
$test = chr(hexdec('17')) == '' ? true : false
// value of test is false
поэтому я хочу знать, какова ценность $key
как я могу сравнить это
$signature1 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", chr(hexdec('17')));
$signature2 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", "");
// signature1 == 020cb911b6415b14f6b1f955adf55be3b17bcbd77a3987408cb41406e39bfc82
// signature2 == 9356975e2119102a773dbd45e4f06d124246794a451c4aee320888bd3f857377
почему он генерирует другой ключ?
Значение $key
не может быть напечатан напрямую, но имеет длину, отличную от пустой строки, поэтому вы не предоставляете те же параметры для hash_hmac
функционировать в обоих случаях. Возможно, $test
переменная должна быть использована?
if( !defined( 'BR' ) ) define('BR','<br />' );
$key = chr(hexdec('17'));
$test = chr(hexdec('17')) == '' ? true : false;$signature1 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", $test );
$signature2 = hash_hmac('SHA256', "st=1453362060~exp=1453363260~acl=/*", '' );
echo 'key:'.$key.' length:'.strlen($key).' length:'.strlen('').BR;
echo $signature1.BR.$signature2;
key: length:1 length:0
728079ac9885314df2cc1207e8eb79ada329d7d4172ce6574a561c540f039c02
728079ac9885314df2cc1207e8eb79ada329d7d4172ce6574a561c540f039c02
Других решений пока нет …