ajax postする際に平文を送信したくないので、jsを使ってjsオブジェクトを文字列やバイナリ文字列に暗号化して送信したいのですが、暗号化の仕方が分かりません、そしてこの暗号化された文字列phpにある必要があります。最後に復号化します。復号化されたデータはphp配列であることが望ましいです。そのようなニーズがある人はいますか?これを達成する方法を知っていますか?
ajax postする際に平文を送信したくないので、jsを使ってjsオブジェクトを文字列やバイナリ文字列に暗号化して送信したいのですが、暗号化の仕方が分かりません、そしてこの暗号化された文字列phpにある必要があります。最後に復号化します。復号化されたデータはphp配列であることが望ましいです。そのようなニーズがある人はいますか?これを達成する方法を知っていますか?
まず第一に、crypto-js は問題を解決できます。対称暗号化アルゴリズム (AES-256-CBC など) を選択し、AES + パスワードを使用して PHP 側で暗号化し、AES + パスワードを使用して JS 側で復号化します。ただし、パスワードはすでに暗号化されているため、これはあまり意味がありません。 jsコードのプレーンテキストで表現されます。
したがって、非テキストを送信することが目的の場合は、トランスポート層から非対称暗号化を実装することをお勧めします。最も簡単な方法は、サーバー プロトコルを HTTP から HTTPs に変更することです。
非対称暗号化アルゴリズムを使用して、ブラウザーで公開キーを使用して暗号化し、サーバー側で秘密キーを使用して復号化することができます。 jsencrypt プロジェクトは RSA 暗号化をサポートしています。必要なのは、openssl
を使用してキー ペアを生成し、公開キーをページに配置することだけです。 PHP は openssl 一連の関数を使用して復号化できます。
暗号化されたデータと復号化されたデータはすべて文字列です。配列を取得したい場合は、JS でオブジェクトを作成し、それを調整してから JSON.stringify
暗号化することができます。 PHP がデコードするのは JSON 文字列であり、 json_decode 関数を使用してそれをデコードして配列を取得できます。