Вопрос по шифрованию

Himan

Новичок
Здравствуйте.
Помогите разобраться.

Задача стоит так: есть XML-ка. Надо получить хэш от неё, потом хэш подписывается ключом, шифруется в Base64 и отправляется.

Не могу разобраться в какой момент куда в каком виде передаются данные. И собственно, как надо по-проффессиональному.

Вот моя реализация и мои комменты как я понимаю.

$key = file_get_contents(__DIR__ . '/private_key.pem');
$PrivateKey = openssl_pkey_get_private($key, 'key_password');

if ($PrivateKey === false) {
die ('Key error');
}

$sign = '';
$binary_data = unpack("H*", $xml); //Здесь $binary_data в шестнадцатиричном виде
$hash = sha1($binary_data[1]); //$hash в шестнадцатиричном виде
openssl_sign(hex2bin($hash), $sign, $PrivateKey); //$hash переводим в бинарный вид. $sign получаем в бинарном виде

$sign = base64_encode($sign);

request($sign);



У меня вопрос, как правильно: в функцию openssl_sign данные нужно ложить в бинарном виде или достаточно в шестнадцатиричном?

Спасибо заранее за разъяснения
 

AnrDaemon

Продвинутый новичок
(а ещё там [/php] есть…)
$binary_data = unpack("H*", $xml); //Здесь $binary_data в шестнадцатиричном виде
C какого перепугу?
$hash = sha1($binary_data[1]); //$hash в шестнадцатиричном виде
А почему не сразу в бинарном?
А нормализацию кто делать будет?
Ложат в штаны.
 
Сверху