如何在Java中序列化和反序列化RSA KeyPair
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Java中序列化和反序列化RSA KeyPair,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1956字,纯文字阅读大概需要3分钟。
内容图文
我想在我的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)
解决方法:
这对我有用:
@Test
public void serializeTest() throws Exception {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = kpg.generateKeyPair();
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(keyPair);
byte[] res = b.toByteArray();
o.close();
b.close();
ByteArrayInputStream bi = new ByteArrayInputStream(res);
ObjectInputStream oi = new ObjectInputStream(bi);
Object obj = oi.readObject();
assertTrue(obj instanceof KeyPair);
oi.close();
bi.close();
}
内容总结
以上是互联网集市为您收集整理的如何在Java中序列化和反序列化RSA KeyPair全部内容,希望文章能够帮你解决如何在Java中序列化和反序列化RSA KeyPair所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。