JSON 文字列の非対称暗号化の問題
この投稿は、gwrc_s_d_n によって 2013-08-12 10:20:07 によって最終編集されました。
別の最近のプロジェクトでは、PHP で http リクエストを送信し、非対称暗号化を使用する必要があります。暗号化する必要がある部分は json 文字列です。
現在のテストの問題は、公開キーを直接使用して json 文字列を暗号化し、サーバーに送信すると、復号化が失敗することです (base64_encode を使用して暗号化して送信すると、クライアントは暗号化をテストし、通常どおり復号化します)。これをサーバーに送信すると、復号化が成功します (これは少し面倒です。json Base64 が一度必要で、暗号化後にもう一度 Base64 が必要です)。
そこでお聞きしたいのですが、json文字列は直接暗号化すべきではないでしょうか?それとも HTTP リクエストの送信に何か問題があるのでしょうか?リクエストは http_client を使用して行われ、fsockopen を直接使用することはできません。
$data['ユーザー名'] = 'test133ed';
$data['content'] =base64_encode(json_encode(array('brid' => '22228222883956', 'money' => 10000000, 'time' => time()))); //base64_encode ではありませんここで使用されます。渡されると復号化できません
openssl_sign($data['content'], $data['sign'], $privkey);
openssl_public_encrypt($data['sign'], $sign, $serverkey);
$data['sign'] =base64_encode($sign);
openssl_public_encrypt($data['content'], $data['content'], $serverkey);
$data['content'] = Base64_encode($data['content']);
$pageContents = HttpClient::quickPost('http://www.test.t:80/index.php/agent/store', $data);
$result =explode(',', $pageContents);
print_r($result);