【发布时间】:2013-04-10 06:56:31
【问题描述】:
在这个 stackoverflow 答案中,您可以看到打印所有可用提供程序和相应算法的代码:How to find out what algorithm [ encryption ] are supported by my JVM?
我正在使用最新版本的 spongycastle,当我要求获取 Spongycastle (“SC”) 在 android 上 的算法时,我只得到了少数算法。事实上,我得到了这个非常有限的列表:
provider: SC
algorithm: PBEWITHMD5ANDDES
algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
algorithm: OLDHMACSHA384
algorithm: PBEWITHHMACSHA
algorithm: PBEWITHMD5ANDDES
algorithm: PKCS12PBE
algorithm: PBEWITHSHAAND128BITAES-CBC-BC
algorithm: IES
algorithm: PKIX
algorithm: RFC3280
algorithm: ISO9797ALG3MAC
algorithm: PBEWITHHMACSHA1
algorithm: CERTIFICATE
algorithm: PBEWITHSHAAND40BITRC2-CBC
algorithm: PBEWITHSHA1ANDDES
algorithm: PBEWITHMD5AND256BITA
另一方面,当我要求在我的 linux 机器上获取 SC 的算法时,我得到了更多的算法。我没有数过它们,但它比你在上面看到的要长 10 倍。
所有其他算法都去哪儿了??
因为这个项目不是一个典型的 android-java 项目,而是一个 Android-Scala 项目,所以我必须在每次执行时使用 Proguard。这对缺失的算法有什么作用吗?还是其他原因?
注意 1:我正在使用 SC 生成密钥对,使用 OpenPGP 进行加密和解密
注意 2:源代码在使用 OpenJDK-6、RSA 算法用于公钥加密和 BLOWFISH 算法作为随机对称密钥的 Linux 机器上进行了测试
【问题讨论】:
-
嗯,你在比较两个完全不同的东西。我的猜测是 DVM 并没有实现完整 JVM 的所有算法。
-
这些算法不应该是库自带的吗?因为如果这些是唯一可用的库,我将永远无法使用 OpenPGP。我需要 RSA、BLOWFISH、CAST5 和其他算法。还有一个事实是,有些应用程序已经成功使用 spongycastle 来使用 openpgp 进行加密
标签: android proguard bouncycastle spongycastle