2

ここで私は使用しています

SecureRandom random = SecureRandom.getInstance("here my name") ;

しかし、それは私たちのプロジェクトで例外を与えていません.しかし、メインメソッドを使用して実行すると、例外が発生します.また、私NoSuchAlgorithm Exception にとっては正常に機能しています.理由は何ですか.私は混乱していますか?

KeyGenerator keyGen = KeyGenerator.getInstance("here my name");

しかし、ここで例外が発生するのはなぜですか?助けてください。よろしくお願いします...

4

1 に答える 1

3

SecureRandom.getInstanceに文字列を渡して有効な結果が得られるという事実は、同じ文字列を に渡してKeyGenerator.getInstanceも成功することを保証するものではありません。

システムでサポートされているアルゴリズムを確認するには、次のコードを実行して結果を確認します。

for (Provider p : Security.getProviders()) {
    for (Object o : p.keySet()) {
        System.out.println(o);
    }
}

出力には、次のような行が含まれます。

Cipher.AES
KeyGenerator.RC2
Mac.HmacSHA512
...
SecureRandom.NativePRNG
SecureRandom.SHA1PRNG
...
KeyGenerator.DES
KeyGenerator.DESede

接頭辞"SecureRandom."(つまり"NativePRNG"、'"SHA1PRNG"') がSecureRandom.getInstance付いた名前はに渡すことができ、接頭辞"KeyGenerator."(つまり"RC2"、, ) が付いた名前は に渡すことができます。"DES""DESede"KeyGenerator.getInstance

于 2013-04-20T11:55:40.107 に答える