我想生成一个密钥对一次,并重复使用它。
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048, new SecureRandom());
KeyPair pair = generator.generateKeyPair();
return pair;
}
字符串
我该怎么做?
1条答案
按热度按时间ajsxfq5m1#
这里有一个小问题:Java的重点几乎完全放在TLS和实现TLS所需的加密技术上。对于TLS,需要私钥和证书。因此,您将陷入以下情况:
1.必须生成一个(伪造的)自签名证书来与您的公钥一起使用;
1.必须找到另一种方法来存储没有证书的私钥。
然而,使用(2.)你很快就得到了一个不太兼容的方法。如果你想这样做,你可以创建一个PKCS#8加密的私钥,使用PBE / CBC加密。
所以这里有一些代码来创建一个自签名证书,并使用它来存储密钥。注意到期日期,为了安全起见,你可以将其设置为100年(或者你可以实际做一些密钥管理)。
字符串
请注意,我太懒了,无法正确处理异常。
这段代码使用了一个稍微修改过的this answer版本,请参阅我的注解,了解为什么我修改了代码。
公钥当然也可以单独存储,只需调用
getEncoded
并存储生成的SubjectPublicKeyInfo结构即可。