java key value pair_Java从KeyPair对象中检索公钥的实际值

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

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()可能最简单:

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

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,key,cryptography

来源: https://codeday.me/bug/20191007/1866196.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值