代码之家  ›  专栏  ›  技术社区  ›  Eric

默认情况下Java的KeyGenerator随机安全吗?

  •  -2
  • Eric  · 技术社区  · 8 年前

    以下行通过jdk生成sha512机密 KeyGenerator .

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

    我想知道随机密钥是否安全?

    或者,我应该用 SecureRandom 实例,然后再生成密钥?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Maarten Bodewes    8 年前

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

    至于实现,如果不调用 初始化 方法显式地假定默认值,并且 SecureRandom 已选择实例。但是,您的意思是正确的,这是一个逻辑提供程序默认值;它 应该 已指定为所有提供商的要求。

    从这里发生的事情中得到一些想法 KeyGeneratorCore . 所有的提供者代码都是在线的,所以找不到它就等于找得不够深入,尽管不可否认,你需要一些Google foo来找到它。

    推荐文章
    user2233125  ·  部分密钥验证
    12 年前