2012-04-08 11 views
11

私はAES/CBC/PKCS5Padding用のカスタムセキュリティプロバイダを作成しました。それはうまく動作します。セキュリティプロバイダをJavaで使用するにはどうすればよいですか?

Providerに上記のアルゴリズムの有効なプロバイダとしてJavaを認識させるには、どのような設定をする必要がありますか?私はすでに持っています

public class FooBarProvider extends Provider { 
    public FooBarProvider() { 
    super("FooBar", 1.0, "Provider for AES."); 
    put("Cipher.AES", "foo.bar.AESCipher"); 
    } 
} 

ここで、後者の引数は実際には仕事をするCipherSpiです。 CBCとPKCS5Paddingをサポートするという事実はどこに登録しますか?現在、関連するCipherを求めることは私のクラスのインスタンスを返しません:

Security.insertProviderAt(new FooBarProvider(), 1); 
Cipher cip = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
System.out.println(cip.getProvider()); //prints "SunJCE version 1.7" 

答えて

7

プロセスの非常に最も簡単な部分です。クラスがAES用のCipher実装を提供すると既に宣言しています。この行:

put("Cipher.AES", "foo.bar.AESCipher"); 

このタスクを達成するには、ほとんどすべてが必要です。アルゴリズムのレベルで暗号実装を登録しているので、モードの埋め込みコードのすべての組み合わせに対して実装が自動的に呼び出されることにも注意してください。

と言っても、コードを書くのは簡単でした。暗号を作成しているので、プロバイダとしてインストールして設定する前にJARに署名する必要があります。プロセスは多少複雑ですので、ここではすべてコピーしないで、Oracle Guide on How to implement a Providerに紹介します。これは、このタスクの優れた情報源です。

ガイドに従っても問題が解決しない場合は、インストールしたJDKに応じてJCE Unlimited Strength Policyをダウンロードしてインストールする必要があります。

+0

私は実装をテストするためにそれをインストールすることはできませんか? –

2

Javaの暗号文書がProviderクラスを登録するための仕組みを説明します

短いですバージョン:

  1. プロバイダJARをクラスパスまたはJavaインストールのextensionsディレクトリに配置します。
  2. プロバイダを登録します。
    • 編集(Javaのインストール中)java.security設定ファイル、または実行時に
    • Security.addProviderまたはSecurity.insertProviderAtを呼び出します。コードを書く
+0

私はその部分を持っています(上記の 'insertProviderAt'呼び出しに注意してください)。私の暗号がCBCとPKCS5Paddingをサポートしていることを登録する構文は何ですか? –

関連する問題