java rsa 字符串_Java中,字符串转换为一个RSA公钥

我试图吨转换公钥的字符串表示成一个公开的Java对象使用对数据进行加密,但我不断收到以下以下错误:Java中,字符串转换为一个RSA公钥

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: Detect premature EOF

at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188)

at java.security.KeyFactory.generatePublic(KeyFactory.java:304)

at com.josh.crypto.CryptoUtil.convertKeytoKeyObject(CryptoUtil.java:96)

at com.josh.crypto.CryptoUtil.encryptData(CryptoUtil.java:78)

at com.josh.ui.EncryptionView$2.actionPerformed(EncryptionView.java:112)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6382)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)

at java.awt.Component.processEvent(Component.java:6147)

at java.awt.Container.processEvent(Container.java:2083)

at java.awt.Component.dispatchEventImpl(Component.java:4744)

at java.awt.Container.dispatchEventImpl(Container.java:2141)

at java.awt.Component.dispatchEvent(Component.java:4572)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)

at java.awt.Container.dispatchEventImpl(Container.java:2127)

at java.awt.Window.dispatchEventImpl(Window.java:2489)

at java.awt.Component.dispatchEvent(Component.java:4572)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)

at java.awt.EventQueue.access$400(EventQueue.java:82)

at java.awt.EventQueue$2.run(EventQueue.java:663)

at java.awt.EventQueue$2.run(EventQueue.java:661)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)

at java.awt.EventQueue$3.run(EventQueue.java:677)

at java.awt.EventQueue$3.run(EventQueue.java:675)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Caused by: java.security.InvalidKeyException: IOException: Detect premature EOF

at sun.security.x509.X509Key.decode(X509Key.java:380)

at sun.security.x509.X509Key.decode(X509Key.java:386)

at sun.security.rsa.RSAPublicKeyImpl.(RSAPublicKeyImpl.java:66)

at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:281)

at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:184)

... 40 more

这里代码片段

private PublicKey convertKeytoKeyObject(String publicKey)

throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchProviderException {

byte[] key = Base64.encodeBase64(publicKey.getBytes());

x509KeySpec = new X509EncodedKeySpec(key);

keyFactory = KeyFactory.getInstance(Keys.RSA);

return keyFactory.generatePublic(x509KeySpec);

}

我在调用generatePublic方法时出现错误。使用

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "rsa-key-20130520"

AAAAB3NzaC1yc2EAAAABJQAAAIEAsE8aR2CIWuQgkeOsPhHDuGo+Rokr2cT+KS5L

sJFbEkB0R3XYXnOT3DU0CFrmHUX1PpcfTOSdxCIfeSXFHCGGWEXm4qx7ptNpm4vP

Scuzmlr/fjuQdb7lBQ0+OEP2LKuRHxt5oEVZvq/EvwENS5T2BiVUSvTwXUS6SKCh

ERydjXE=

---- END SSH2 PUBLIC KEY ----

1023 37 76983149213904336854114697871156413897597333013960300274862161645944637611303244321149406756964434094764396730933825927553585120754675001147670015123442685209165940390638704889262818745065195784329243512386761389890962501775294435871155079992876425567019740053306097979712960040526841676998224241040015724649 rsa-key-20130520

2013-05-20

jonney

+0

如何的关键是什么样子?乍一看它似乎太大了。 –

+0

它是一个可以通过一些字符串输入定义的动态键。我尝试了一个只有一个角色的关键,但仍然抱怨它太大了。 –

+0

编辑:一个键,如sdsds = [B @ 5ddc0e7a时转换为base64字节数组 –

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值