私は、暗号を利用するAndroidプラットフォーム向けのアプリケーションを作成しています。これは安全なチャットで、diffie hellmanキーを持つclient-> server-> clientです。 クライアントはAndroid端末で、サーバーは自分のPCで動作しています。 私はソケット経由で公開鍵を送信しようとしていますが、私はこのエラーを取得しています:Java/Android Bouncy castle ClassNotFoundException
Server Up and Running
Bouncy Castle provider is available
Aug 21, 2016 4:47:03 PM Connection run
SEVERE: null
java.lang.ClassNotFoundException: com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.BCDHPublicKey
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:626)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at Connection.run(Connection.java:124)
あなたが弾む城プロバイダを見ることができるようにすることは可能です。 はここで問題と私のコードです:
サーバー:
if (Security.getProvider("BC") == null){
System.out.println("Bouncy Castle provider is NOT available");
}
else{
System.out.println("Bouncy Castle provider is available");
}
try {
pubkey = (PublicKey) instream.readObject();
}catch (IOException ex) {}
アンドロイド:
PublicKey pubkey;
kp23 = genDHKeyPair();
pubkey= kp23.getPublic();
//System.out.println(pubkey);
outstream.writeObject(pubkey);
outstream.flush();
アンドロイドVMはJava VMではありません。 2つの間でオブジェクトを逆シリアル化することはできません。互換性はありません。 –