Java从KeyPair对象中检索公钥的实际值 [英] Java Retrieve the actual value of the public key from the KeyPair object

查看:205
本文介绍了Java从KeyPair对象中检索公钥的实际值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问一下如何从KeyPair对象中检索私钥和公钥的实际值,因为我需要将它们导出并保存在数据库中。

I wanted to ask how to retrieve the actual values of the private and public keys from the KeyPair object because i need to export them and save in a database.

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair keyPair = kpg.genKeyPair();

System.out.println("Public key " + keyPair.getPublic());
System.out.println("Private key " + keyPair.getPrivate());

输出为:

Public key Sun RSA public key, 1024 bits
  modulus: 105712092415375085805423498639048173422142354311030811647243014925610093650322108853068042919471115278002432342007597147610508132502035047888382465733153739247741208519707861808073276783311634229563965825609200080862631487160732889423591650215084096832366499080850540875321197564283324922935557797293830551071
  public exponent: 65537
Private key sun.security.rsa.RSAPrivateCrtKeyImpl@35e71


推荐答案

最简单的方法是使用 keypair.getPublic。 getEncoded() keypair.getPrivate.getEncoded()

It's probably easiest to use keypair.getPublic.getEncoded() or keypair.getPrivate.getEncoded():

RSA私钥以PKCS#8格式编码,公钥以X.509格式编码。

RSA private keys are encoded in PKCS#8 format, and public keys are encoded in X.509 format.

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048);
KeyPair keyPair = kpg.generateKeyPair();
PublicKey pub = keyPair.getPublic();
PrivateKey prv = keyPair.getPrivate();

byte[] pubBytes = pub.getEncoded();
byte[] prvBytes = prv.getEncoded();

// now save pubBytes or prvBytes

// to recover the key
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey prv_recovered = kf.generatePrivate(new PKCS8EncodedKeySpec(prvBytes));
PublicKey pub_recovered = kf.generatePublic(new X509EncodedKeySpec(pubBytes));

System.out.println("Private Key: \n" + prv_recovered.toString());
System.out.println("Public Key: \n" + pub_recovered.toString());

这篇关于Java从KeyPair对象中检索公钥的实际值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆