以下行通过 jdk 生成 sha512 密钥KeyGenerator
。
SecretKey secretKey = KeyGenerator.getInstance("HmacSHA512").generateKey();
我想知道密钥随机安全吗?
SecureRandom
或者,我应该在生成密钥之前显式地使用实例初始化生成器吗?
以下行通过 jdk 生成 sha512 密钥KeyGenerator
。
SecretKey secretKey = KeyGenerator.getInstance("HmacSHA512").generateKey();
我想知道密钥随机安全吗?
SecureRandom
或者,我应该在生成密钥之前显式地使用实例初始化生成器吗?
为了完整起见,您可以init
使用 512 位的密钥大小调用该方法。但是,HMAC 的默认密钥大小与输出大小相同。因此,从这个意义上说,假设默认设置此密钥大小是非常合理的。实际上,init
应该避免使用常量值调用该方法。
至于实现,如果您不init
显式调用该方法,则很可能会假定默认值并SecureRandom
选择实例。但是,从某种意义上说,这是一个逻辑提供程序默认值,您是正确的;它应该被指定为所有提供商的要求。
从这里发生的事情的一些想法是在KeyGeneratorCore
。所有的提供者代码都是在线的,所以没有找到它是因为看的不够深入,尽管你需要一些谷歌 foo 才能找到它。