Java的KeyGenerator默认是随机安全的吗?

时间:2018-02-23 18:07:17

标签: java cryptography key-generator

以下行通过jdk' s KeyGenerator生成sha512秘密。

SecretKey secretKey = KeyGenerator.getInstance("HmacSHA512").generateKey();

我想知道密钥随机安全吗?

或者,我应该在生成密钥之前明确地使用SecureRandom实例初始化生成器吗?

1 个答案:

答案 0 :(得分:1)

为了完整起见,您可以使用512位的密钥大小调用init方法。但是,HMAC的默认密钥大小与输出的大小相同。因此,在这种意义上,假设默认设置此密钥大小是非常合理的。实际上,应该避免使用常量值调用init方法。

对于实现,如果您没有明确调用init方法,则假定使用默认值并选择SecureRandom实例。但是,从某种意义上说,这是正确的提供者默认值; 已被指定为所有提供商的要求。

这里发生的一些想法是KeyGeneratorCore。所有的提供商代码都是在线的,所以找不到它是不够深入的,尽管你需要一些Google foo才能找到它。