2011-02-04 18 views
10

私は、SilverlightクライアントとWCFを使用するネイティブコード(C++)サーバー間で暗号化されたデータを送信することを検討しています。私はAesManagedクラスを使って、クライアントがサーバに送り返したデータを暗号化することを考えていましたが、解読については疑問を抱いていました。 AesManagedクラスがAES仕様に対して実装されている場合は、C++ AESライブラリとの相互互換性があるはずですが、Microsoft(および他のベンダ)の仕様の "解釈"の経験を前に、私はそれを確認すべきだと感じていたという前提があります可能なら。Silverlightで暗号化されたデータは、C++を使用して復号化できますか?

私はプロトタイプの作成を計画していますが、私はこの分野ですでに経験を積んだ人からの答えを期待していました。 AesManagedクラスへのアクセスにC++/CLIまたはC#を使用することは、私が機能を追加する従来のコードを扱っているので、オプションではありません。

答えて

1

私はそれが頼まれたことが分かりました。この特定の相互運用については話すことはできませんが、AesLibという古いネイティブ実装を使用していた従来のソフトウェアと通信しようとしていましたが、AesCryptoServiceProviderを使用しようとしていました。 AesLibはIVなしのモードを使用するか、検出できない静的または確定的なIVを持つので、彼らはお互いに話をしませんでした。

ネイティブサーバーが使用しているAES実装を取得して参照することができ、ICryptoServiceProvider互換のラッパーを実装すると、メッセージが完全に届くことが保証されます(ただし、 )。それ以外の場合は、この実装に関するすべての検出可能な情報があることを確認して、同じ方法でAesManagedを構成することができます。少なくとも、キー、IV、ブロックサイズ、モードが必要です。

0

私はC#AesManagedとPHPのAES実装を一緒に使用していました(Silverlight 2 Beta)。これは確かに可能です。

しかし、IV、パディング、ブロックサイズ、モードなどを慎重に勉強して、AESの設定を確実に確認したい場合があります。

関連する問題