Как я могу получить результат openssl_public_decrypt?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу получить результат openssl_public_decrypt?

Сообщение Anonymous »

Результат: «Расшифрованные данные не являются строкой». Я не знаю почему. Кто-нибудь, помогите мне. Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.Спасибо.
#include "php.h"
#include "ext/standard/info.h"
#include "ext/standard/php_string.h"
#include "ext/standard/base64.h"
PHP_FUNCTION(my_openssl_public_decrypt) {
zend_string *data, *public_key;
zval func_name;
zval result;
zval params[3];
zval decrypted_zval;

if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS", &data, &public_key) == FAILURE) {
RETURN_FALSE;
}

zend_string *raw_data=php_base64_decode_ex((const unsigned char*)(ZSTR_VAL(data)), ZSTR_LEN(data), 0);

ZVAL_STR(&func_name, zend_string_init("openssl_public_decrypt",strlen("openssl_public_decrypt"),0));

ZVAL_STR(&params[0],raw_data);
ZVAL_NEW_REF(&params[1],&decrypted_zval);
ZVAL_STR(&params[2],public_key);

if (call_user_function(EG(function_table), NULL, &func_name, &result, 3, params) == FAILURE) {
php_error_docref(NULL, E_WARNING, "Failed to call openssl_public_decrypt");
php_printf("%s","Failed to call openssl_public_decrypt\r\n");
RETURN_FALSE;
}

if (Z_TYPE(result) == IS_TRUE) {
if (Z_TYPE(decrypted_zval) == IS_STRING) {
RETURN_TRUE;

} else {
php_printf("%s","Decrypted data is not a string\r\n");
php_error_docref(NULL, E_WARNING, "Decrypted data is not a string");
RETURN_FALSE;
}
} else {
php_printf("%s","Decryption failed\r\n");
php_error_docref(NULL, E_WARNING, "Decryption failed");
RETURN_FALSE;
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... ic-decrypt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»