Python для Base64 кодировать SHA256

Может кто-нибудь помочь мне с преобразованием следующего сценария 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));

но я хочу получить желаемый результат с помощью и массива, а не строки с кавычками …

0

Решение

Вам нужно заменить питона json.dumps с php json_encode

$data_string = json_encode(array('text' => 'Hello world'));
base64_encode(hash("sha256", $data_string, true));

Обе эти функции принимают ассоциативный массив и преобразуют его в строковое представление. Тогда это строка, в которой вы выполняете кодирование hash / base64.

0

Другие решения

Пол Кровелла, Вы указали правильное направление.
Мне нужно заменить строку в кодированной переменной 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 =

0

По вопросам рекламы [email protected]