我的Windows PC和Android應用程序上運行了java服務器。這兩個應該溝通編碼。所以我使用「RSA」算法以不對稱方式進行通信。但它沒有工作,所以我用Bouncy Castle作爲我的提供者。仍然相同問題:Android加密和普通Java應用程序(.jar)加密之間的區別
java.lang.ClassNotFoundException: com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.BCRSAPublicKey
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:344)
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 ServerRIL_Android.VerschlüsselungRSA.Verschlüsseln(VerschlüsselungRSA.java:194)
at ServerRIL_Android.SchlüsselAust.Register(SchlüsselAust.java:230)
at ServerRIL_Android.Anmeldung.LeseDaten(Anmeldung.java:61)
服務器想要使用應用程序中的Publickey編碼一些數據。
byte[] verschlüsselt = new byte[0];
byte[] s = new byte[0];
try{
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE));
final PublicKey publicKey = (PublicKey) inputStream.readObject();
s = encrypt(zuVerschlüsseln, publicKey);
verschlüsselt = s;
}
catch(Exception e)
{
System.out.println(e + "-verschlüsseln");
e.printStackTrace();
}
return verschlüsselt;
有人知道如何做到這一點嗎?我試圖找出這一點,因爲一個星期沒有找到答案。
這是什麼?服務器或Android客戶端的堆棧跟蹤在哪裏?那麼你顯示的代碼,服務器或客戶端呢? – 2014-12-07 23:23:38