如何获取此密钥对并将其存储以使其不会更改,我将能够使用相同的密钥对在单独的应用程序中加密和解密?我正在使用此密钥对中的公钥加密字符串(例如“1234A”)并将其存储到数据库中。对于解密部分,我从数据库中获取加密的字符串,并使用同一密钥对中的私钥对其进行解密。
public static KeyPair generateKey () throws NoSuchAlgorithmException
{
KeyPairGenerator keyGen = KeyPairGenerator.getInstance ("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
return key;
}
答案 0 :(得分:1)
KeyPair类实现Serializable,其组件部分PrivateKey和PublicKey也是如此。您可以序列化为字节流并将其存储在数据库中吗?
答案 1 :(得分:1)
首先,您需要通过以下方式从KeyPair获取公钥和私钥:
PrivateKey priv = key.getPrivate();
PublicKey pub = key.getPublic();
此方法会将密钥写入文件,以后可以在单独的应用程序中解密/验证该文件:
public void writeToFile(PrivateKey priv, PublicKey pub){
byte[] keyBytes = priv.getEncoded();
FileOutputStream privOut;
try {
privOut = new FileOutputStream(privateName);
privOut.write(keyBytes);
privOut.close();
FileOutputStream pubOut = new FileOutputStream(publicName);
byte[] pubKeyBytes = pub.getEncoded();
pubOut.write(pubKeyBytes);
pubOut.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
答案 2 :(得分:0)
KeyPair
是可序列化的,因此您可以将其序列化为文件或数据库,并在所有应用程序中对其进行反序列化。