Может кто-нибудь помочь мне с преобразованием следующего сценария Python в PHP?
data = json.dumps({'text': 'Hello world'})
content_sha256 = base64.b64encode(SHA256.new(data).digest())
Значение content_sha256 должно быть
oWVxV3hhr8 + LfVEYkv57XxW2R1wdhLsrfu3REAzmS7k =
Я попытался использовать функцию base64_encode, и получу желаемый результат, только если я использую строку:
$data_string = "{\"text\": \"Hello world\"}";
base64_encode(hash("sha256", $data_string, true));
но я хочу получить желаемый результат с помощью и массива, а не строки с кавычками …
Вам нужно заменить питона json.dumps
с php json_encode
$data_string = json_encode(array('text' => 'Hello world'));
base64_encode(hash("sha256", $data_string, true));
Обе эти функции принимают ассоциативный массив и преобразуют его в строковое представление. Тогда это строка, в которой вы выполняете кодирование hash / base64.
Пол Кровелла, Вы указали правильное направление.
Мне нужно заменить строку в кодированной переменной json, прежде чем я отправлю ее через base64, чтобы получить ту же строку, что и строка, созданная Python:
$data_array = array("text" => "Hello world");
$data_string_json_encoded = json_encode($data_array);
$data_string_json_encoded_with_space_after_colon = str_replace(":", ": ", $data_string_json_encoded);
$data_string_base64 = base64_encode(hash("sha256", $data_string_json_encoded_with_space_after_colon , true));
Затем я получаю желаемый результат, такой же, как в скрипте Python:
oWVxV3hhr8 + LfVEYkv57XxW2R1wdhLsrfu3REAzmS7k =