RSA key 的转换

Public key formats supported

  • PKCS#1 RSAPublicKey* (PEM header: BEGIN RSA PUBLIC KEY)
  • X.509 SubjectPublicKeyInfo** (PEM header: BEGIN PUBLIC KEY)
  • XML <RSAKeyValue>

Private key formats supported (unencrypted)

  • PKCS#1 RSAPrivateKey** (PEM header: BEGIN RSA PRIVATE KEY)
  • PKCS#8 PrivateKeyInfo* (PEM header: BEGIN PRIVATE KEY)
  • XML <RSAKeyPair> and <RSAKeyValue>
Android调用系统接口KeyPairGenerator生成的Key分别是X509和PKCS#8格式,参考如下
http://www.cryptosys.net/pki/rsakeyformats.html
http://stackoverflow.com/questions/7611383/generating-rsa-keys-in-pkcs1-format-in-java
http://stackoverflow.com/questions/7216969/getting-rsa-private-key-from-pem-base64-encoded-private-key-file
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用Base64编码将PrivateKey对象转换为字符串,也可以将字符串转换为PrivateKey对象。 以下是一个示例,演示如何将PrivateKey对象转换为字符串,然后再将字符串转换回PrivateKey对象: ```java import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Base64; public class PrivateKeyToStringExample { public static void main(String[] args) throws Exception { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // 将PrivateKey对象转换为字符串 String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded()); System.out.println("PrivateKey as string: " + privateKeyString); // 将字符串转换为PrivateKey对象 byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyString); PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(privateKeyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKeyFromString = keyFactory.generatePrivate(spec); // 验证转换后的PrivateKey对象与原始PrivateKey对象是否一致 System.out.println("PrivateKey equals: " + privateKey.equals(privateKeyFromString)); } } ``` 在上面的示例中,我们使用Base64编码将PrivateKey对象转换为字符串,然后使用Base64解码将字符串转换回PrivateKey对象。在将字符串转换为PrivateKey对象时,我们需要使用PKCS8EncodedKeySpec类来指定私钥的格式,并使用KeyFactory类来生成PrivateKey对象。最后,我们验证转换后的PrivateKey对象与原始PrivateKey对象是否一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值