16

Java でいくつかの Rijndael 開発を行う必要があります。

私たちに役立つ記事、ライブラリなどの推奨事項はありますか?

キーストアのメンテナンスとキーを安全に保存する方法への指針はありますか?

編集:

オープンソースである必要があります。基本的には、Rijndael を使用した標準的なデータの暗号化/復号化です。

4

4 に答える 4

28

Java には、すぐに使える AES が含まれています。Rijndael は AES です。外部ライブラリは必要ありません。次のようなものが必要です。

byte[] sessionKey = null; //Where you get this from is beyond the scope of this post
byte[] iv = null ; //Ditto
byte[] plaintext = null; //Whatever you want to encrypt/decrypt
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
//You can use ENCRYPT_MODE or DECRYPT_MODE
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sessionKey, "AES"), new IvParameterSpec(iv));
byte[] ciphertext = cipher.doFinal(plaintext);

暗号化/復号化については以上です。大量のデータを処理している場合は、16 バイトの倍数のチャンクを読み取り、doFinal の代わりに update を呼び出したほうがよいでしょう (最後のブロックで doFinal を呼び出すだけです)。

于 2009-03-19T21:51:11.690 に答える
5

優れた無料ライブラリとして、BouncyCastle を強くお勧めします。積極的にメンテナンスされており、高品質で、素晴らしいコード例がたくさんあります。リファレンス ドキュメントについては、一般的なJCE ドキュメントにもっと依存する必要があります。

FIPS 認定要件を満たすためにどのライブラリを使用しているかはわかりません。しかし、CryptoJ に代わる、はるかに安価な代替手段があります。

一般に、Rijndael のような対称暗号で暗号化するメッセージごとに新しいキーを生成し、RSA のような非対称アルゴリズムでそのキーを暗号化することをお勧めします。これらの秘密鍵は、PKCS #12 や Java の「JKS」などのパスワードで保護されたソフトウェア ベースのキー ストアに保存するか、セキュリティを強化するために「スマート カード」ハードウェア トークンまたはその他の暗号化ハードウェア モジュールに保存できます。

于 2009-02-25T19:15:30.237 に答える
3

私の会社が最近発見したように、AES は完全に Rijndael ではありません。AES には、キーが 128、192、または 256 ビットでなければならないという制限がありますが、Rijndael では 160 ビットと 224 ビットのキーも許可されています。

上記の erickson が示したように、BouncyCastle は追加のキーの長さ (128/160/192/224/256 ビット) をサポートする Rijndael オブジェクトを提供します。具体的には、軽量 API を見てください。

Gnu-crypto は別のオープン ソース ライブラリですが、160 ビットと 224 ビットのキーもサポートしていません。

したがって、Rijndael の完全なサポートを具体的に探しているのであれば、これまでに見つけたのは BouncyCastle だけです。

于 2011-01-18T22:41:22.413 に答える
1

javax.crypto は AES をサポートしています: http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

安全なキー ストレージに関しては、通常の方法は、暗号化ハッシュ関数を使用してユーザー入力 (パスフレーズ) から暗号化キーを導出し、導出されたキーを使用してキーチェーンを暗号化することです。または、キーが 1 つだけ必要な場合は、派生キー自体を使用できます。

システムのセキュリティは、使用されるハッシュ関数の強度に直接関係していることを常に念頭に置いてください。暗号的に安全なハッシュ関数を、可能であればソルトとともに使用し、複数回 (たとえば、数百回) ハッシュします。

そうは言っても、質問は非常に漠然としています。

于 2009-02-25T19:07:25.623 に答える