【问题标题】:Blowfish encryption in androidandroid中的河豚加密
【发布时间】:2012-01-27 14:40:51
【问题描述】:
cipher = Cipher.getInstance("Blowfish");

这会引发异常 java.security.NoSuchAlgorithmException: Cipher Blowfish implementation not found。

我检查了 local_policy.jar 和 US_export_policy.jar 都存在,并且从安装 java 的那一刻起它们就没有改变。什么会导致这个问题?

编辑:

Object[] o = Security.getAlgorithms("Cipher").toArray();
    for (int i=0; i<o.length; i++) {
        System.out.println((String)o[i]);
    }

当我运行此代码时,我得到的列表没有“Blowfish”,但在 DES 或 RSA 等算法名称中,有一些未知名称,例如“1.2.840.113549.1.1.7”等。为什么那里没有河豚,或者它隐藏在这些数字中?

【问题讨论】:

    标签: java android blowfish


    【解决方案1】:

    我在我的 android 应用程序上使用了河豚加密。我不知道为什么,但是河豚加密已经从android上的充气城堡库中注释掉了。

    我不得不下载充气城堡的源代码,我将提供者名称从 BC 更改为 BC2 并将包名称重命名为 bouncycastle2 以避免与 android sdk 上已经存在的冲突。然后我将这个自定义 Bouncy Castle jar 作为新 jar 添加到我的应用程序中,它工作正常!

    【讨论】:

      【解决方案2】:

      是的,我找不到解决方案,只使用了 GNU 加密库。它工作正常。

      【讨论】:

        【解决方案3】:

        local_policy.jar 和 US_export_policy.jar 与 Android 无关。您需要在 Android 上运行算法列表代码以获得有意义的结果。正如其他人所指出的,Android JCE 提供程序基于 Bouncy Castle,但不包括所有算法。您需要在您的应用程序中捆绑完整的库才能使用所有算法。请使用Spongy Castle 使这更容易。完成后,您需要的唯一更改是将提供程序指定为“SC”:

        Cipher c = Cipher.getInstance("Blowfish", "SC");
        

        【讨论】:

          【解决方案4】:

          如果您想要完整的平台支持,我可以建议的唯一解决方案是使用外部软件包。

          Android 带有一个精简版的 BouncyCastle。我相信随着版本的进展会添加额外的功能。

          但是,将完整的 BouncyCastle jar 导入 android 会导致很多问题,因为 Android 版本使用相同的名称。

          我使用的解决方案是使用 SpongyCastle。我以前使用过它,但没有查看源代码以确保没有进行任何更改。

          安装指南: How to include the Spongy Castle JAR in Android?

          【讨论】:

            【解决方案5】:

            cipher = Cipher.getInstance("Blowfish")

            仅适用于 Android 2.3 及更高版本,因此您的目标可能低于 Android 2.3?

            编辑:如果你想构建到 2.3 或者说 4.0 ICS,但也支持较低的设备,你可以在你的 Manifest.xml 中添加这样的东西:

            <uses-sdk android:minSdkVersion="3" />
            <uses-sdk android:targetSdkVersion="14" />
            

            唯一的问题是你必须提供 Blowfish 作为一个选项,这对于 2.3 以下的任何人来说不是一个有效的加密方法选择(不可点击/灰色),我想。测试它!构建它,并在各种 SDK 版本上试用。祝你好运!

            【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-04-30
            • 2016-02-29
            相关资源
            最近更新 更多