Android SecretKeyFactory问题。没有找到实施?

时间:2010-02-13 07:04:22

标签: java android encryption

我正在尝试为Android创建一个使用加密来保存用户信息的应用程序,我无法弄清楚我做错了什么。我正在尝试使用“PBKDF2WithHmacSHA1”算法创建SecretKeyFactory的实例,但应用程序继续在程序中的那一点抛出异常(无论是在模拟器中还是在真实硬件上都无关紧要)。 p>

代码:

SecretKeyFactory secretFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");

例外:

  

java.security.NoSuchAlgorithmException:   SecretKeyFactory PBKDF2WithHmacSHA1   没有找到实施......

这是奇怪的事情......如果我把这个代码编译成普通的Java应用程序,它可以运行......没有异常被抛出,我可以创建加密文件(并解密它们)而不会出错。

我还尝试输入其他算法(例如AES,PBEWithHmacSHA1AndDESede,PBEWithMD5AndDES等),它们都会在代码中的那一行产生相同的错误/异常(编译Android时)。

我安装了最新版本的Java(JDK 1.6.0.18),所有更新都应用于Eclipse和插件,以及最新版本的Android SDK。我也在运行Windows 7 64位。

请帮助,我在两天的互联网搜索中找不到答案。 感谢。

4 个答案:

答案 0 :(得分:4)

它可能不是支持的算法或Android上的命名。

您是否浏览过javax.crypto类? https://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html

以下是使用不同算法的示例,如果有帮助的话。 http://www.anddev.org/viewtopic.php?p=11737

顺便说一下,在此帖子中添加“from-irc”标签即可获得Google响应。 http://android-developers.blogspot.com/2010/01/irc-offce-hours-update.html

答案 1 :(得分:4)

这意味着android SDK没有此算法的实现。您有两种选择:

  • 切换到另一个支持的算法(我找不到引用,因此请手动尝试)
  • 提供您自己的算法实现

答案 2 :(得分:2)

是否有可在Android上使用的第三部分实现? Firefox Sync例如使用PBKDF2WithHmacSHA1,所以对我来说切换 另一种算法是没有选择的,因为那是我试图解密的。

答案 3 :(得分:0)

某些算法不适用于每个Android API。在SecretKeyFactory的官方文档中,您可以根据API来检查哪一个可用。

例如,PBKDF2withHmacSHA1可从API 10+获得。