我想在我的Java应用程序中实现一些非常基本的安全性,但我在最初的阶段遇到了困难。
我想要做的是: 1-生成RSA密钥对 2-以序列化的形式将这些密钥存储在我的数据库中,以便在下次运行应用程序时重新创建它们 3-反序列化它们,以便将它们返回为对象形式,并可以使用它们来加密/解密内容。
问题是,我无法在任何地方找到关于如何执行此操作的简明说明。 我尝试了标准的Java序列化/反序列化方法,但它们并不起作用。我的代码如下:
我遇到的问题是第一个方法失败了,抛出了ClassCastException异常,告诉我无法将对象强制转换为"KeyPair"。而第二个方法可以正常工作(将密钥序列化为字节数组)。有没有关于如何正确执行此操作的提示?
编辑:以下是异常信息(在第一个方法的“return((KeyPair)obj);”处抛出):
我想要做的是: 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)