如何将密钥对存储在变量中,以便它不会更改

时间:2011-07-20 09:59:00

标签: java rsa

如何获取此密钥对并将其存储以使其不会更改,我将能够使用相同的密钥对在单独的应用程序中加密和解密?我正在使用此密钥对中的公钥加密字符串(例如“1234A”)并将其存储到数据库中。对于解密部分,我从数据库中获取加密的字符串,并使用同一密钥对中的私钥对其进行解密。

public static KeyPair generateKey () throws NoSuchAlgorithmException
{                    
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance ("RSA");      
    keyGen.initialize(1024);         
    KeyPair key = keyGen.generateKeyPair();        
    return key;    
}

3 个答案:

答案 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是可序列化的,因此您可以将其序列化为文件或数据库,并在所有应用程序中对其进行反序列化。