以下行通过JDK的KeyGenerator
生成SHA512秘密。
SecretKey secretKey = KeyGenerator.getInstance("HmacSHA512").generateKey();
我想知道关键是随机安全的吗?
或,在生成密钥之前,我应该明确地使用SecureRandom
实例来启动生成器?
仅为完整性,您可以使用512位的密钥大小调用init
方法。但是,HMAC的默认密钥大小与输出相同。因此,从这个意义上说,假设此密钥大小默认设置为非常合理。确实,应避免使用常数值调用init
方法。
至于实现,如果您不明确调用init
方法,则假定默认值并选择SecureRandom
实例。但是,从某种意义上说,您是正确的,这是逻辑提供商默认值。应该为所有提供商指定。
KeyGeneratorCore
中发生的事情是一些想法。所有提供商的代码都在线,因此没有发现看起来不够深刻,尽管诚然,您需要一些Google foo才能找到它。