0

私は暗号化サービス(.Net Class Lib)を持っています。暗号化と復号化がうまくいく限り、Javaに移植する必要がありますが、問題は暗号化された値をデータベースに保存しなければならないことです。 Java サービスによって生成される暗号化値は、.Net クラス ライブラリによって生成される値と一致する必要があります。

値を暗号化するとandroid、両方のサービスが異なる暗号化された値を生成するとします。考えられる回避策または探すべきものは何ですか...

4

2 に答える 2

2

一般に、暗号化システムには次のパラメータがあります。

システムは任意の言語と任意のプラットフォームで開発できます。これら 3 つが同じであれば、どの実装からの出力も同じになります。アルゴリズムは基本単位としてバイトを使用する必要があるため、プラットフォームのエンディアンなどは問題ではありません。

エルゴ、同じ入力に対して異なる出力を取得している場合、それらの1つ以上が間違っています:)

独自の暗号化システムを開発した場合 (たとえば、自分で 3DES を実装した場合)、おそらくそこに間違いがあります。暗号システムの実装は常に学術専門家に任せてください。

キーと IV を正しく設定すると仮定します。これにより、暗号ブロック モードが終了します。異なるプラットフォームには独自のデフォルトがあるため、これが最も妥当な説明です。

ただし、これらすべてが .NET と Java の両方の実装で同じであることを確認した場合は、質問を再投稿する必要がありますが、関連するソース コードを含む詳細を記載してください。

于 2012-12-10T08:00:58.180 に答える
1

私は同じことをしました-JavaからC#まで。オープン ソース プロジェクトの既存のコードを調べると役立つ場合があります。

  • LockCryptは私が書いた例です
  • Keepassにはすべての主要言語のポートがあるため、それぞれの暗号化の実装方法を比較できます
于 2012-12-10T08:10:10.563 に答える