Необходимо проверить открытым ключом строку, которая приходит GET запросом.
запрос такой:
key.php?action=check&number=100001&amount=10.50&type=1&sign=5EB7E68A5140BC62FB1A50EAF1A589FD8B40B239B31B6AEE799C9DA1F396144F79DDC2D4332E655D3D0DE60E9BE3BF5EB62E026766554AAF7A0B7201E0BACA1A68E12FD12F32016CD48E452D76D3136078AB53BD878B23D88BCB705C5C9406184E0D6264D3D3709ECBDDA994EB5CAE8F81C2A64FC015C20572598B56DD58F689
делаю так:
//исходная строка GET запроса
$get_str = $_SERVER['QUERY_STRING'];
//позиция параметра SIGN
$sign_place = strpos($get_str, "sign");
//строка без параметра SIGN
$string_wthout_sign = substr($get_str, 0, $sign_place - 1);
//Хеш строки запроса без SIGN
$string_hash = sha1($string_wthout_sign);
//строка SIGN
$string_sign = $_GET['sign'];
//Открытый ключ для проверки
$public_key = <<<EOD
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEPpPvdefdg/NpfoENZgem4rxE
JWJFX6pOP3fCyMuBAt7F5ieqnYLhREN9loR56ACJhA17lK3A6tt1bROxLGtFwv4L
hrXI+qjQiQHZIsJKW2waE2KQdI9jiSE+9vg+iIoAYHSFx029wvJQRQH9qHifDXfa
VWdYr5icleV7My9jiwIDAQAB
-----END PUBLIC KEY-----
EOD;
$ok = openssl_verify($string_wthout_sign, $string_hash, $public_key, OPENSSL_ALGO_SHA1);
echo "check #1: ";
if ($ok == 1) {
echo "signature ok (as it should be)\n";
} elseif ($ok == 0) {
echo "bad (there's something wrong)\n";
} else {
echo "ugly, error checking signature\n";
}
читал тут http://www.php.net/manual/en/function.openssl-sign.php
не работает.....что я делаю не так?
Заранее благодарю!