AES/RSA暗号化メカニズム

PHPz
PHPzオリジナル
2017-04-04 14:36:312098ブラウズ

httpHTTP サーバーと端末デバイス間の通信中、パケットはネットワーク (Android) によってキャプチャされ、逆コンパイルされることがよくあります。 APK 逆コンパイル ツール) およびその他のテクノロジーを使用して、HTTP 通信インターフェイス のアドレスとパラメーターを取得します。情報のセキュリティを確保するために、AES+RSA の組み合わせを使用してインターフェイス パラメーター を暗号化および復号化します。1. RSA について。暗号化メカニズム: 公開キーはデータの暗号化に使用され、秘密キーはデータの復号化に使用されます。公開キーと秘密キーは同時に生成され、互いに対応します。公開鍵で暗号化した後、暗号文を B に送信すると、B は秘密鍵と公開鍵を使用して復号化できます 2. AES 暗号化は対称暗号化とも呼ばれます: A が AES にパスワードを使用した後データを暗号化し、B は同じパスワードを使用して暗号文を復号化します。

具体的な操作方法:


1. openssl モードを使用して、キーの関連する

属性
を入力します。端末で、端末の現在のアドレスの下に、公開鍵と秘密鍵の合計 7 つのファイルを生成します (7 つのファイルの使用方法については、付録の展開リンクを参照してください)

2. Android クライアントは公開キー Public

Key を持ち、サーバーは公開キー PublicKey と秘密キー

を持っていると仮定します。3. Android はサーバーにリクエストを送信します。Android は Byte[] ランダム パスワードをランダムに生成します。 RandomKey=123456 と仮定し、AES アルゴリズムを使用して

Json データを暗号化します。 4. ただし、現時点ではサーバーはクライアントの RandomKey が何であるかを知らないため、RandomKey をサーバーに渡す必要があります。同時に行わないと、サーバーは AES を介して Json データを復号化できません。ただし、リクエストが直接送信されると、RandomKey が RSA で不可逆的に暗号化される必要があります。 RandomKey と RSA で暗号化された RandomKey を使用した Json データを HTTP 経由でサーバーに送信します。

6. サーバーは、AES で暗号化された RandomKey データを受信し、秘密キーを使用して暗号化を解除します。 Android によって生成された元の RandomKey を取得します。

8. 元の RandomKey を使用して、暗号化された Json データの AES 対称復号を実行します。 この時点で、Android 側から送信された元の Json データが取得されます。その後、返されたデータは Android 側の RandomKey を通じて AES 暗号化され、Response が返されます。

9. Android 端末は、Response データを受信した後、ローカルで生成された RandomKey を使用して AES 復号化を直接実行できます。

以下の詳細なフローチャートをご覧ください。

クライアントサーバーHTTPSデータ送信フローチャート

注意事項

:

1 実際の開発過程で、RSAとAESは暗号文生成規格が異なり、iOSと互換性がないことが判明しました。 IOS では、RSA アルゴリズムに JAVA とは異なる公開キーが必要です。詳細な解決策については、次を参照してください:

2. jdk1.7 以降のバージョンは 128 バイトを超える KEY をサポートしていないため、AES 暗号化では 128 バイトを超える KEY を使用できません。 AES/RSA暗号化メカニズム
概要: パフォーマンス テストの結果、暗号化されたデータの送信から復号化されて元のデータが返されるまでのクライアント全体の時間は

300

ms を超えません (Iphone4 および Centos Java サーバーの送信テスト)。このプランはTOKENを使用しませんが、将来的に使用される可能性があります。公開鍵を

更新

する方法も引き続き改善する必要があります。

以上がAES/RSA暗号化メカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。