-2

以下行通过 jdk 生成 sha512 密钥KeyGenerator

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

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

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

4

1 回答 1

1

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

至于实现,如果您不init显式调用该方法,则很可能会假定默认值并SecureRandom选择实例。但是,从某种意义上说,这是一个逻辑提供程序默认值,您是正确的;它应该被指定为所有提供商的要求。

从这里发生的事情的一些想法是在KeyGeneratorCore。所有的提供者代码都是在线的,所以没有找到它是因为看的不够深入,尽管你需要一些谷歌 foo 才能找到它。

于 2018-02-24T22:47:59.373 回答