3

AES でメッセージをエンコードし、AJAX 経由でサーバーに渡す JS でアプリを作成する必要があります。次に、サーバーが Java を使用してメッセージをデコードします。

私の質問は次のとおりです: JSでメッセージを暗号化し、AESを使用してJavaで復号化できるようにする方法は? Java と js の間の通信が Web サービス経由で既に確立されていることを知っている

クライアント側では、Crypto JS ライブラリ ( http://code.google.com/p/crypto-js/ ) を使用します。サーバー側では、Java で提供される Cipher クラスを使用します (Java Play フレームワークを使用しますが、ここでは関係ありません)。

私は暗号化にまったく慣れていません。私は一日中研究を行ってきましたが、まだこれを機能させることができません。

問題は、メッセージの暗号化と復号化に使用されるキーが同じでなければならないことです。これを行う方法がわかりません。

私の検索から、AES を使用するにはさまざまなモードがあることがわかりました。デフォルトでは、Java は ECB を使用し、CryptoJS は CBC を使用します。これは問題ですが、CryptoJS に ECB モードも使用するように指示することで、修正するのはそれほど難しくないようです。しかし、パディングの問題があります.Javaで利用できる唯一のパディングであり、CryptoJSにはパディングがまったくないようです. しかし、Java で NoPadding を使用すると、例外が発生します。

しかし、これを修正できたとしても、大きな問題は、CryptoJS によって生成されたキーと Java によって生成されたキーが同じではないことです。Java でメッセージを暗号化すると、結果は常に同じで、16 進数になります。しかし、crypto JS では Base64 にあり、決して同じではありません....

これは、Java と CryptoJS で同じではないキー生成が原因であることを理解しています (その後、私にとってはあいまいな IV と Salt の概念に入ります)。

4

2 に答える 2

2

ブラウザー JS で暗号化を行わないでください。安全に行うことは不可能です。

SSL を使用します。その意図された目的は、ブラウザとサーバー間の通信を暗号化することです。

コストが問題なら、無料の SSL 証明書があります。

于 2013-02-22T15:28:37.723 に答える