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