【发布时间】:2013-03-08 06:02:07
【问题描述】:
我遇到了 RSA 加密和解密的问题。我正在用 android 开发,想外包 RSA 加密和解密。在我尝试外包之前,我的源代码运行良好。
我创建了一个私钥和公钥,并将其保存为 private.key 和 public.key。错误是这个方法导致的ClassNotFoundException:
public Key getPrivateKey(){
try {
InputStream fis = activity.getResources().openRawResource(R.raw.private);
ObjectInputStream ois = new ObjectInputStream(fis);
Key RSAprivateKey = (Key)ois.readObject();
return RSAprivateKey;
}
catch (FileNotFoundException e) {
Log.e("FileNotFound","FileNotFound");
e.printStackTrace();
} catch (IOException e) {
Log.e("IOEXception","IOEXception");
e.printStackTrace();
} catch (ClassNotFoundException e) {
Log.e("ClassNotFound","ClassNotFound");
Log.e("Errro", "Error: "+ e.getMessage());
Log.e("error", e.toString());
e.printStackTrace();
}
return null;
}
我查看了 logcat 并收到了以下错误消息:
E/ClassNotFound(1205): ClassNotFound
03-19 13:54:52.176: E/Errro(1205): Error:
com.android.org.bouncycastle.jce.provider.JCERSAPrivateCrtKey
03-19 13:54:52.176: E/error(1205): java.lang.ClassNotFoundException:
com.android.org.bouncycastle.jce.provider.JCERSAPrivateCrtKey
希望你能理解我的问题,因为英语不是我的母语。
编辑:我发现问题不是由外包代码引起的。所以我想这个话题可以标记为已解决。
【问题讨论】:
-
仅供参考-您的日志记录非常奇怪。您可能只想要一个包含
Log.e(TAG, "Error loading key", e);的catch (Exception e)语句,其中TAG是在别处定义的静态字符串,例如private static final String TAG = MyActivity.class.getName();. -
请使用您添加到我现在已删除的答案中的 cmets 编辑您的问题。也许有人可以帮助你。
-
我解决了。我生成了一个新密钥并将其从原始文件夹加载为输入流。然后我使用 PKCS8EncodedKeySpec 和 X509EncodedKeySpec 类来生成密钥。
-
发布您的答案,以便关闭。
-
您可以发布自己问题的答案,然后接受它。在您的答案中提供足够的详细信息可以帮助面临类似问题并通过搜索引擎找到此问题的其他人。
标签: android encryption rsa