Когда я зашифровываю переменную, в которую помещаю какой-то текст, она работает, но если я использую переменную, которой я назначаю вывод $ this:
$data1 = new DOMDocument("1.0", "utf-8");
//creating the xml document
...
//after creating the document
$output = $data1->saveXML();
где $ data1 является объектом xml. После этого я использую открытый сертификат для извлечения открытого ключа, для шифрования строки $ output:
$pub_key = openssl_pkey_get_public(file_get_contents('./certificate.cer'));
$keyData = openssl_pkey_get_details($pub_key);
$key = $keyData['key'];
После того, как у меня есть открытый ключ в переменной $ key, я хочу зашифровать вывод $ с помощью открытого ключа $ key, и я использую следующий код для обработки возможной ошибки:
$crypted='';
if (($blnResult = openssl_public_encrypt($output, $crypted, $key)) === false) {
throw new \Exception("error: openssl_public_encrypt() failed!");
}
echo base64_encode($crypted);
И это дает мне error: openssl_public_encrypt() failed!
, Обратите внимание, что если я назначаю $output='foo'
, это работает, поэтому я не понимаю, почему это не работает, если я назначаю $output the data->saveXML();
? Это строка длиной 270 символов. Он должен работать.
Задача ещё не решена.
Других решений пока нет …