gpt4 book ai didi

java - KeyPairGenerator.generateKeyPair() 线程安全吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:22:39 27 4
gpt4 key购买 nike

询问 KeyPairGenerator.initialize() 方法需要一个 SecureRandom 实例,它的初始化成本很高。 Java Doc 没有提到它是线程安全的。我能找到的就是a comment in the source code .会不会是它取决于实际创建的 KeyPairGenerator 实例?顺便说一下,我使用的是 Sun RSA 实例。

最佳答案

确实取决于创建的实际实例,神经突,如您推测的那样。重要的是要注意 KeyPairGenerator 类是抽象的,实现子类会覆盖 generateKeyPair 方法。因此,抽象类 KeyPairGenerator 的作者不能声称它是线程安全的。他们所能做的就是确保他们没有做任何损害线程安全的事情。

使用静态 getInstance 方法获取 KeyPairGenerator 的标准方法返回从 KeyPairGenerator 派生的类的实例:请参阅 KeyPairGenerator.Delegate 类。它的 generateKeyPair 实现也不会损害线程安全性,因此如果您以这种方式获取 KeyPairGenerator,则没有问题。但您也可以获得这样的 KeyPairGenerator:

    KeyPairGenerator kpg=new KeyPairGenerator("RSA"){
@Override
public KeyPair generateKeyPair(){
return doSomethingThatIsntThreadSafe();
}
};

当然,您永远不会这样做,但 KeyPairGenerator 的作者无法知道这一点,因此他们无法告诉您 KeyPairGenerator 的任何实例都是线程安全的。

fine 意味着依赖于您的加密 SPI 来做正确的事情!

关于java - KeyPairGenerator.generateKeyPair() 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25691151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com