2011-01-18 23 views
1

私はWeb上やこのフォーラムで無数の例を見てきましたが、私は答えを見つけることができません。JavaとC#.Netの間のAES暗号化の問題

データの暗号化と復号化に成功したJavaクライアントがあります。 データの暗号化と復号化に成功した.Netクライアントがあります。

.Net版をWebサービスとして公開しました。私は、Javaクライアントの一部のデータを暗号化し、.Net Webサービスに送信します。私は得る: - パディングは無効であり、削除することはできません。 -

私は同じエンコード、IV、キー、すべてを使用していることを確認します。唯一考えられるのは、バイト配列をサービスに送信しているということです。私がJavaクライアントから配列を吐き出して、サービスに到着した配列と比較すると、サービスの配列は符号なしバイト配列としてキャストされる点で異なります。ここでは、2つの配列は次のとおり

[-47 17 -27 -32 -101 54 -93 47 85 -83 -31 -102 53 -125 115 -14]

[209 17 229 224 155 54 163 47 85 173 225 154 53 131 115 242]

私はこれが原因であると推測しています。どうすればこの問題を回避できますか? Rijndaelの実装では、符号付きバイト配列を受け入れません。私は行方不明の変換はありますか?

ありがとうございました。私は私の脳を通して脳を吹き飛ばす準備ができています。 ST

EDIT - コードを確認した後、エラーが見つかりました。私はいくつかのデータをコピーしなければならなかったし、間違ったインデックスで始めた。 Arrrgggghhhhhhh!

ご迷惑をおかけします。

+0

使用した暗号化、ブロックサイズ、パディングなどのオプションは何ですか?私は同じ問題で問題を抱えています。ありがとう –

答えて

1

両方の場合で同じ実際のデータがあります。つまり、Javaが符号なしバイトをサポートしていないということだけです。各プラットフォームで独自のデータを復号化でき、両方のプラットフォームで同じデータが生成されている場合は、その違いをどのように把握できるか分かりません。

何かは.NET側とは違っていると思います。確かに知るにはコードを見る必要があります。

.NETクライアントで全く同じデータを復号しようとするとどうなりますかデータを復号化しますか?私はあなたがファイルを解読しようとする小さなコンソールアプリケーションを作成することをお勧めします。 .NETサーバーでファイルに与えられたデータを保存し、それを通常の方法で解読しようとします。その後、ファイルに対してコンソールアプリケーションを実行します。結果をここに報告してください。私たちは、あなたがそれらの意味を理解するのを手伝っていきます。

+0

私はコードを投稿することができます。 – soulTower

+0

@soulTower:コードを投稿する前に、私が後で示唆するテストを試してみましょう。ある場所で作業コードがあることが分かっている場合は、そのコードをWebサービスに送信されているデータで使用してみてください。 –