我想在我的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)

keypair java_如何在Java中序列化和反序列化RSA KeyPair相关推荐

  1. java中序列化与反序列化_Java中的序列化

    java中序列化与反序列化 Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息. 因此,如果我们已 ...

  2. 字符串压缩 java_如何在Java中压缩字符串?

    如何在Java中压缩字符串? 我使用GZIPOutputStream或ZIPOutputStream压缩字符串(我的2222235278130938882小于20),但压缩结果比原始字符串长. 在某个 ...

  3. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  4. java中序列化与反序列化

    一.基本概念 1.序列化和反序列化的定义: (1)Java序列化就是指把Java对象转换为字节序列的过程Java反序列化就是指把字节序列恢复为Java对象的过程. (2)序列化最重要的作用:在传递和保 ...

  5. 多线程线程池的实现java_如何在Java中实现线程池

    多线程线程池的实现java 线程是独立程序的执行路径. 在java中,每个线程都扩展java.lang.Thread类或实现java.lang.Runnable. 多线程是指在一个任务中同时执行两个或 ...

  6. c#枚举类似于java_如何在Java中获得类似于C的性能

    c#枚举类似于java 总览 Java有许多可能很慢的领域. 但是,对于每个问题都有解决方案. 许多解决方案/黑客都需要解决Java的保护问题,但是如果您需要低水平的性能,还是可以的. Java使高级 ...

  7. setyear java_如何在Java中创建不可变类

    如果对象在构造后无法更改,则该对象是不可变的.不可变对象不会以任何方式暴露其他对象来修改其状态; 对象的字段仅在构造函数内初始化一次,并且永远不会再次更改. 在本文中,我们将定义在Java中创建不可变 ...

  8. 怎么比较字符串java_如何在Java中比较字符串?

    在本文中,优锐课将带你学习如何比较字符串以及使用等于(=)运算符比较字符串时发生的问题. 介绍 字符串是Java中的特殊类.我们在Java程序中定期使用String,因此比较两个字符串是Java中的一 ...

  9. jpeg java_如何在java中使jpeg无损?

    JAI包提供了保存"无损JPEG"格式的能力.根据您想要的变体将压缩类型设置为 JPEG-LS or JPEG-LOSSLESS. 我不确定你真的想要无损JPEG.这是一种单独的格 ...

最新文章

  1. 每天学一点Scala之 伴生类和伴生对象
  2. EasyUI——常见用法总结
  3. 【洛谷 P3469】[POI2008]BLO-Blockade(割点)
  4. linux高级编程补充知识
  5. Java Websocket实例
  6. 事务管理基础:排它锁和共享锁相关知识笔记
  7. 计算机相关货品类别,工业计算机的种类以及产品供应链
  8. Hadoop 开源调度系统zeus(二)
  9. 代码全靠copy,Bug又烂又多,做程序员的目的是什么?
  10. java中int,char,string三种类型的相互转换
  11. linux卸载amd软件命令,Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载
  12. 苹果X可以升级5G吗_郭明錤:苹果5G手机明年推出 屏幕最大升级至6.7寸
  13. 约束布局(ConstraintLayout)1.1.2 版本的新特性
  14. ffmpeg获取视频截图
  15. 豪华版飞机大战系列(三)
  16. 【Anychart】自动保存flash图片到指定目录下。
  17. 如何把avi转换为mp4?视频转换用嗨格式视频转换器
  18. 学计算机装机,新手学装机:小白如何从零开始学装机
  19. 用正则表达式替换手机号为星号*的写法
  20. C语言之const和volatile究极学习

热门文章

  1. LVS server 关键点
  2. 让图片算好高宽再显示
  3. Linkify介绍 编辑textview超链接
  4. 星座图与IQ调制总结+BPSK、QPSK、8PSK、16QAM等的区别与总结
  5. 基于python实现opencv视频去抖动
  6. Ubuntu 16.04下Caffe-SSD的应用(七)——制作自己的VOC2007数据集
  7. Centos换源 加快软件安装速度 2021-03-17
  8. java线程和linux线程,Java线程与Linux内核线程的映射关系
  9. 描述符应用 -- 让python变成一个强类型的语言
  10. WPF PRISM开发入门一( 初始化PRISM WPF程序)