5

少なくとも 128 ビット キーで暗号化して機密データを保存する必要があります。javax.crypto パッケージを調べたところ、PBEWithMD5AndDES や PBEWithSHA1AndDESede など、56 ビットと 80 ビットまでの暗号化を提供する特定の暗号名があることがわかりました ( http://en.wikipedia.org/wiki/DESede )。

私は他の人の投稿を参照しましたが、それらは主にRSAを使用しており、私の理解では、RSAは一般に通信データの暗号化に適しています(秘密鍵と公開鍵のペアを使用)。私のニーズは異なります。データを保存し、復号化して元に戻したいだけです。したがって、秘密鍵と公開鍵のペアは必要ありません。

これについて何か考えがあれば教えてください。

4

6 に答える 6

8

Advanced Encryption Standard (AES)を使用します。128、192、または 256 ビットのキー長をサポートします。

アルゴリズムは単純です。Sun Java Web サイトには、Java で AES 暗号化を行う方法を説明するセクションがあります。

ウィキペディアから...

... 高度暗号化標準 (AES) は、Rijndael とも呼ばれ、米国政府によって暗号化標準として採用されているブロック暗号です。前身のデータ暗号化規格 (DES) と同様に、広範囲に分析され、現在では世界中で使用されています...

したがって経験則として、DES またはその変種は段階的に廃止されているため、使用しないことになっています。

現時点では、AES を使用することをお勧めします。TwofishBlowfishなどの他のオプションもあります。Twofish は Blowfish の高度なバージョンと見なすことができることに注意してください。

于 2008-09-08T07:01:45.567 に答える
4

私は過去にhttp://www.bouncycastle.org/で大きな成功を収めました(C# バージョンもあります)。

于 2008-09-08T07:18:57.833 に答える
3

JDK 用の無制限強度 JCE ポリシー ファイルをダウンロードしてインストールする必要があります。JDK 6 の場合は、http://java.sun.com/javase/downloads/index.jspの一番下にあります。

于 2008-09-08T06:20:51.780 に答える
2

3 つの異なる回答を組み合わせると、正しいと思われる回答が得られます。

Bouncycastleから暗号化ライブラリをダウンロードしてから、 Oracleから「Unlimited Strength Jurisdiction Policy」をダウンロードする必要があります(ファイルはダウンロード ページの下部にあります)。インストール方法については、必ず Readme ファイルをお読みください。

これが完了したら、Bountycastle パッケージで提供されるサンプル コードを使用して、データを暗号化できるはずです。112 ビット キー (128 ビットとも呼ばれますが、実際に安全なのはそのうちの 112 ビットのみ) を提供するトリプル DES 実装を使用するか、前述のように AES を使用できます。私のお金はAESになります。

于 2008-09-08T08:34:13.283 に答える
0

私は決して暗号の専門家ではありません (したがって、この提案を一粒の塩で受け取ってください) が、以前にBlowfishを使用したことがあり、必要に応じて使用できると思います。Twofishと呼ばれる同じ人物による新しいアルゴリズムもあります。

これはJava実装のWebサイトですが、ライセンスに注意してください(非営利目的での使用は無料と書かれています)。そのリンクはBruce Schneier の Web サイト(両方のアルゴリズムの作成者)からも見つけることができます。

于 2008-09-08T06:26:39.783 に答える
0

Michael に感謝します。JCE で多くのことを試した後、最終的に bouncycastle に落ち着きました。

JCE は、暗号化用の AES とパスワード ベースの暗号化用の PBE をサポートしていますが、両方の組み合わせはサポートしていません。バウンシーキャッスルで見つけたのと同じものが欲しかった。

例はhttp://forums.sun.com/thread.jspa?messageID=4164916にあります。

于 2008-09-08T09:29:13.293 に答える