keypair java_如何在Java中序列化和反序列化RSA KeyPair

我想在我的Java应用程序中实现一些非常基本的安全性,但是一开始我就陷入了困境.

我想做的是这样的:

1-生成RSA密钥对

2将这些密钥以序列化形式存储在数据库中,以便在下次运行该应用程序时重新创建它们

3-反序列化它们,这样我就可以将它们恢复为对象形式,并可以使用它们来加密/解密内容.

问题是,在任何地方我都找不到直接的解释.

我尝试了标准的Java序列化/反序列化方法,但是它们不起作用.我的代码如下:

public static KeyPair Bin2KeyPair(byte[] data){

try{

ByteArrayInputStream b = new ByteArrayInputStream(data);

ObjectInputStream o = new ObjectInputStream(b);

Object obj =o.readObject();

return((KeyPair)obj);

}catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static byte[] KeyPair2Bin(KeyPair kp){

ByteArrayOutputStream b = new ByteArrayOutputStream();

ObjectOutputStream o;

try {

o = new ObjectOutputStream(b);

o.writeObject(kp);

return b.toByteArray();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

我遇到的问题是第二种方法工作正常(将键序列化为字节数组),但是第一种方法失败,抛出ClassCastException,告诉我无法将对象转换为“ KeyPair”.

有关如何正确执行此操作的任何提示?

编辑:这是个例外(在第一种方法中,它会抛出“ return((KeyPair)obj);”):

java.lang.ClassCastException: [B cannot be cast to java.security.KeyPair

at DARCOServer.security.SecurityManager.String2KeyPair(SecurityManager.java:34)

at DARCOServer.security.SecurityManager.GenerateServerKeys(SecurityManager.java:122)

at DARCOServer.MainClass.main(MainClass.java:13)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值