首页 > 解决方案 > Java:键类型和字符串之间的转换

问题描述

是否可以获取我生成的公钥,将其转换为字符串,反转该过程并再次将其用作密钥?

    generator = KeyPairGenerator.getInstance("RSA");
    generator.initialize(2048);

    KeyPair keyPair = generator.generateKeyPair();

    RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
    RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

然后将其转换为字符串:

String public = someMethod(publicKey)

然后稍后将其反转:

RSAPublicKey newPublicKey = someMethod(public)

标签: javarsapublic-key-encryption

解决方案


您可以将公钥转换为字符串,如下所示。

String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded());

然后可以将该字符串转换回公钥,如下所示。

byte[] publicKeyBytes = Base64.getDecoder().decode(publicKeyString);
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey2 = keyFactory.generatePublic(spec);

推荐阅读