出于安全目的,我使用以下代码来创建公钥和私钥。
public KeyGenerator(int keylength) throws NoSuchAlgorithmException, NoSuchProviderException {
this.keyGen = KeyPairGenerator.getInstance("RSA");
this.keyGen.initialize(keylength);
}
public void createKeys() {
this.pair = this.keyGen.generateKeyPair();
this.privateKey = pair.getPrivate();
this.publicKey = pair.getPublic();
}
public PrivateKey getPrivateKey() {
return this.privateKey;
}
public PublicKey getPublicKey() {
return this.publicKey;
}
public void writeToFile(String path, byte[] key) throws IOException {
File f = new File(path);
f.getParentFile().mkdirs();
FileOutputStream fos = new FileOutputStream(f);
fos.write(key);
fos.flush();
fos.close();
}
public static void main(String[] args) {
KeyGenerator kg;
try {
kg = new KeyGenerator(2048);
kg.createKeys();
System.out.println(kg.getPublicKey().getFormat()); // this prints out X.509
System.out.println(kg.getPrivateKey().getFormat()); // this prints out PKCS#8
kg.writeToFile(PUBLIC_KEY_PATH, kg.getPublicKey().getEncoded());
kg.writeToFile(PRIVATE_KEY_PATH, kg.getPrivateKey().getEncoded());
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
我需要找到一种方法将私钥(如下图所示)以以下格式存储在电子仓库中。此时,当我用文本编辑器打开钥匙时,我得到的结果如下所示。
有没有办法将这个PKCS#8转换成适合存储在文件中的编码?
谢谢!
发布于 2018-09-26 22:59:31
我现在觉得自己很愚蠢,因为我已经在上面花了好几个小时了。我会把答案放在这里。
所以问题是,我想以字符串的形式存储(在文本文件中,二进制文件的内容-就像上图中描述的那样)
如果您使用的是基于unix的系统,则可以通过以下方式轻松实现:
base64 filename.key > string.txt
现在,如果你想要回你的二进制文件,就像下面这样简单:
base64 -D string.txt > filename-clone.key
所以这不是与java相关问题
https://stackoverflow.com/questions/52519603
复制相似问题