Java BigInteger在Android上的性能,适用于加密计算密集型应用程序



我正在为Android开发一个计算密集型的加密应用程序。我必须处理大小在80到1024位之间的正整数。我需要模幂运算和复合性测试。我意识到唯一的选择(如果我只想用Java编写代码)是使用BigInteger类。在性能方面有什么更好的解决方案吗?例如,我想使用GNUMPBignum库和JNI用C编写应用程序。这在性能方面值得吗?这是否需要仅针对应用程序入口点的JNI粘合代码,或者还有其他问题?

Android使用OpenSSL的BN API作为其BigInteger算法的一部分,因此它应该相当快。要找到较慢的方法,请查看Android的BigInteger文档中附带的"实施说明"。

正如其他人所指出的:不要实现自己的加密原语,因为你会遇到麻烦。例如,GMP泄露时间信息。