【问题标题】:Android SecretKeyFactory problems. Implementation not found?Android SecretKeyFactory 问题。没有找到执行?
【发布时间】:2010-02-13 07:04:21
【问题描述】:

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

代码:

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 位。

请帮忙,我在网上搜索了两天还没有找到答案。 谢谢。

【问题讨论】:

    标签: java android encryption


    【解决方案1】:

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

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

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

    顺便说一句,在这篇文章中添加一个“from-irc”标签以获得谷歌回复。 http://android-developers.blogspot.com/2010/01/irc-offce-hours-update.html

    【讨论】:

    • 感谢您的回复。我会尝试更多其他类型的算法,如果有任何效果,我会回复。
    • 在尝试了我能找到的所有算法之后,Android 支持的唯一算法似乎是“PBEWithMD5AndDES”。您的第二个链接提供了这方面的工作证据。我将在我的程序中使用它。谢谢。
    • 这个问题不再有效。 PBKDF2WithHmacSHA1 在 Android 10(2019 年 9 月)中可用。
    【解决方案2】:

    这意味着 android SDK 没有实现该算法。你有两个选择:

    • 切换到另一个受支持的算法(我找不到参考,所以手动尝试)
    • 提供您自己的算法实现

    【讨论】:

    【解决方案3】:

    是否有任何可在 Android 上使用的第三部分实现? 例如 Firefox Sync 正在使用 PBKDF2WithHmacSHA1,所以对我来说切换 无法选择另一种算法,因为这就是我要解密的内容。

    【讨论】:

      【解决方案4】:

      某些算法并非适用于所有 Android API。在SecretKeyFactory的官方文档中,可以根据API查看哪一个可用。

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

      【讨论】:

        猜你喜欢
        • 2013-10-27
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-04
        • 2019-05-30
        • 1970-01-01
        相关资源
        最近更新 更多