2

我在这里使用

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

但它在我们的项目中没有给出任何异常。但是当我使用 main 方法运行时,它对我来说是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."(ie "NativePRNG", '"SHA1PRNG"') 为前缀的名称可以传递给SecureRandom.getInstance,而以"KeyGenerator."(ie "RC2", "DES", "DESede") 为前缀的名称可以传递给KeyGenerator.getInstance

于 2013-04-20T11:55:40.107 回答