ホームページ >バックエンド開発 >PHPチュートリアル >JSON文字列の非対称暗号化の問題
最近の別のプロジェクトでは、PHP で http リクエストを送信し、非対称暗号化を使用する必要があります。暗号化する必要がある部分は json 文字列です。
一般に、base64 以降は可能ですが、元のデータには制御文字 (非表示) が含まれているため、文字列モードで渡すとバイト モードに変更する必要があります。使用しているモジュールの説明に、openssl についてはあまり知りません
HttpClient::quickPost 私がダウンロードしたバージョンにはありますが、静的ではないので、静的に変更しました。
本当にわかりません、
送信の問題であれば、送信前に暗号化データを Base64 エンコードしたので、制御文字は存在しないはずです。
openssl rsa が json 文字列を暗号化できない場合、クライアントでそれを復号化するのが通常ですか?
http プロトコルは投稿データをエンコードします。サーバーはまず投稿データをデコードしてから復号化する必要があります。
http は投稿をエンコードせず、単に get 値に似た文字列であるようです。送信された http リクエスト パケットを見てください
Base64 が必要かどうかは、些細な問題ではなく、アルゴリズムによって決定されます
何か間違ったことをしたかどうかを判断するには、各ステップの計算結果を追跡する必要があります
少なくとも json_encode の後は json 文字列二重引用符がたくさん含まれていますが、暗号化アルゴリズムに影響しないことはどうやってわかりますか?
暗号化後はローカルで復号化するのが通常なので、暗号化で二重引用符を暗号化できないのは意味がないと思います。トランスミッションの問題の可能性がさらに大きくなります。しかし、パケットを確認したりキャプチャしたりする方法がわかりません。
http は投稿をエンコードしていないようで、値の取得に似た単なる文字列です。送信された http リクエスト パケットを見てください
もちろん、urlencode より大きいものはすべてエンコードされます。
Base64 以降は問題がないのはなぜですか? Base64 以降はすべて
http は投稿をエンコードしていないようで、取得値に似た文字列だけです。送信された http リクエスト パッケージを確認してください。
受信する場合は、base64 で再度暗号化します。送信メディアに問題はありません。