Javaアプリケーションに非常に基本的なセキュリティを実装したかったのですが、最初は行き詰まっています。
私がやりたいことはこれです:1-RSAキーペアを生成します2-それらのキーをシリアル化された形式でDBに保存し、アプリケーションの次の実行でそれらを再作成できるようにします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;
}
私が抱えている問題は、2番目のメソッドは正常に機能する(キーをバイト配列にシリアル化する)が、最初のメソッドは失敗し、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)