我正在爲使用加密技術的Android平臺編寫應用程序。這是一個安全的聊天,客戶端 - >服務器 - >客戶端與diffie hellman密鑰。 客戶端是Android手機,服務器正在我的電腦上運行。 我試圖發送通過套接字的公鑰,但我得到這個錯誤:Java/Android充氣城堡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();
android虛擬機是*不*是Java虛擬機。你不能在兩者之間反序列化對象,它們不兼容。 –