Diskuze: PHP hmac Autentizační token
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


jak to již bývá, když to sepíšu, vždy mě ještě něco napadne
jistě to tak taky máte 
takže když jsem si postěžoval jak to nejde, našel jsem funkci, která
vrací to co očekávám
má vyjít : digest = X+pyDNT9t+Q2Ctismyoec9OE4ig=
echo "custom_hmac: ".base64_encode(custom_hmac("sha1", "1+POST+/rest/api/v1/order/1122334455/delivery+2017-01-23T19:33:43.511", "s3Cr37!", $raw_output = true));
a vyjde X+pyDNT9t+Q2Ctismyoec9OE4ig=
třeba to někomu pomůže 
function custom_hmac($algo, $data, $key, $raw_output = false)
{
$algo = strtolower($algo);
$pack = 'H'.strlen($algo('test'));
$size = 64;
$opad = str_repeat(chr(0x5C), $size);
$ipad = str_repeat(chr(0x36), $size);
if (strlen($key) > $size) {
$key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
} else {
$key = str_pad($key, $size, chr(0x00));
}
for ($i = 0; $i < strlen($key) - 1; $i++) {
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}
$output = $algo($opad.pack($pack, $algo($ipad.$data)));
return ($raw_output) ? pack($pack, $output) : $output;
}
Zobrazeno 2 zpráv z 2.