【发布时间】:2013-05-29 17:38:47
【问题描述】:
我是 Java 新手。我关注了tutorial 关于使用 3DES 算法进行加密和解密的内容。
我是这样实现的:
- 创建了一个类并放置了上面链接中提供的 3DES 代码。
-
调用上述链接中的加密方法如下:
String encryptedPassword = Encrypter.encrypt(edtText.getText().toString());
我在 logcat 中得到如下异常:
05-02 15:19:10.804: W/System.err(4445): java.security.NoSuchProviderException: Provider not available: SunJCE
05-02 15:19:10.820: W/System.err(4445): at javax.crypto.Cipher.getInstance(Cipher.java:209)
05-02 15:19:10.820: W/System.err(4445): at com.example.utilities.Encrypter.encrypt(Encrypter.java:46)
05-02 15:19:10.820: W/System.err(4445): at com.example.screens.RegisterScreen.onClick(RegisterScreen.java:152)
05-02 15:19:10.820: W/System.err(4445): at android.view.View.performClick(View.java:2485)
05-02 15:19:10.820: W/System.err(4445): at android.view.View$PerformClick.run(View.java:9080)
05-02 15:19:10.828: W/System.err(4445): at android.os.Handler.handleCallback(Handler.java:587)
05-02 15:19:10.828: W/System.err(4445): at android.os.Handler.dispatchMessage(Handler.java:92)
05-02 15:19:10.828: W/System.err(4445): at android.os.Looper.loop(Looper.java:130)
05-02 15:19:10.828: W/System.err(4445): at android.app.ActivityThread.main(ActivityThread.java:3687)
05-02 15:19:10.835: W/System.err(4445): at java.lang.reflect.Method.invokeNative(Native Method)
05-02 15:19:10.835: W/System.err(4445): at java.lang.reflect.Method.invoke(Method.java:507)
05-02 15:19:10.835: W/System.err(4445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
05-02 15:19:10.835: W/System.err(4445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
05-02 15:19:10.835: W/System.err(4445): at dalvik.system.NativeStart.main(Native Method)
请帮助我。如何解决这个......
【问题讨论】:
-
您在代码中的某处指定了 SunJCE 提供程序。即使在 Oracle 的 java 运行时这样的地方,这也没有任何意义。当然,Android 上不存在该提供程序。除非您有充分的理由不这样做,否则请使用默认提供程序。
-
@GregS 你想发布答案吗?
-
@GregS 你能发布一个解决方案吗?
-
@DuncanJones 你能帮帮我吗....
-
@user2326860 更改您的代码并删除它明确声明
"SunJCE"的任何地方。例如,将("DESede/CBC/PKCS5Padding","SunJCE");更改为("DESede/CBC/PKCS5Padding");。
标签: java android encryption 3des