任何人都可以帮我将以下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 :(得分:0)
您需要用php json.dumps
json_encode
$data_string = json_encode(array('text' => 'Hello world'));
base64_encode(hash("sha256", $data_string, true));
这两个函数都采用关联数组并将其转换为字符串表示形式。然后是您对其执行hash / base64编码的字符串。
答案 1 :(得分:0)
Paul Crovella,你指出了正确的方向。 在我通过base64发送它之前,我必须对json编码变量进行字符串替换,以获得与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 =