Java 在文本文件中写入RSA公钥

Java 在文本文件中写入RSA公钥,java,encryption,fileoutputstream,Java,Encryption,Fileoutputstream,我正在尝试生成一个RSA密钥对,并将RSA公钥存储在一个文本文件中,以便稍后打开它。我有我的文本文件,但在我运行saveRSApublicKey函数后,它不会向我的pubkey.txt文件写入任何内容。请帮忙 public class Server { static KeyPair keys; static byte[] RSAencrypted; File file; FileOutputStream fop = null; public Receiver() throws NoSuchA

我正在尝试生成一个RSA密钥对,并将RSA公钥存储在一个文本文件中,以便稍后打开它。我有我的文本文件,但在我运行saveRSApublicKey函数后,它不会向我的pubkey.txt文件写入任何内容。请帮忙

public class Server {

static KeyPair keys;
static byte[] RSAencrypted;
File file;
FileOutputStream fop = null;

public Receiver() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException{
    keys = KeyPairGenerator.getInstance("RSA").generateKeyPair();
}


public void saveRSApublicKey() throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException{
    byte[] pubKeyBytes = keys.getPublic().getEncoded();
    file = new File("pubkey.txt");
    fop = new FileOutputStream(file);
    fop.write(publicKeyBytes);
    fop.close();

}

}注意
pubKeyBytes
pubKeyBytes
不一样

您在
publicKeyBytes
中获取公钥内容,但从
publicKeyBytes
写入流。应该是:

byte[] pubKeyBytes = keys.getPublic().getEncoded();
file = new File("pubkey.txt");
fop = new FileOutputStream(file);
fop.write( pubKeyBytes );
fop.close();

您的代码是如何编译的?

是的。对不起,我的意思是“运行我的方法后”我编辑了。为什么
keys
是静态的?
pubKeyBytes
是否包含字节?是的,它确实包含字节。我不明白为什么它不向文本文件写入任何内容