首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android BigInteger ArithmeticException

Android BigInteger ArithmeticException
EN

Stack Overflow用户
提问于 2014-10-21 14:28:18
回答 1查看 1.1K关注 0票数 13

我正在尝试在Android应用程序中实现RSA算法。我使用java.math.BigInteger.modPow()函数进行en/解密,这对我的计算机(Windows和Xubuntu)和Raspberry (也是Debian)都很好。当在我的手机(Android4.4.4)上执行相同的代码时,在第二次调用modPow()时会引发以下异常

代码语言:javascript
复制
java.jang.ArithmeticException: error:0306B06B:bignum routines:BN_div:not initialized
    at java.math.NativeBN.BN_mod_exp(NativeMethod)
    at java.math.BigInt.modExp(BigInt.java:327)
    at java.math.BigInteger.modPow(BigInteger.java:997)
    at "where I call java.math.BigInteger.modPow()"

我检查了指数和模数:两者都是正的,所以文档没有真正的帮助。缩小键的大小(指数和模量)也没有改变任何东西。不幸的是,我无法找到本机函数的来源,并且没有可能发生的事情。

您知道为什么会抛出此异常或错误代码意味着什么吗?

EN

回答 1

Stack Overflow用户

发布于 2014-11-06 07:47:12

因为它告诉您没有初始化,所以BigInteger的创建肯定以某种方式失败了。

截至利布密

BIGNUM库通常位于libcrypto中,这是与OpenSSL一起提供的。它的API在openssl/bn.h中定义。此库导出BIGNUM类型。BIGNUM对象在使用之前总是需要初始化,即使它们是静态声明的。

所以,请检查您是否可以在代码中初始化它,或者尝试更低的api版本,因为我还没有深入到这个版本中。

还要检查绑定的库是否与平台架构32/64位相对应。

另一种猜测是:如果SSL错误队列不是空的,那么Android4.4.4有一个可能的错误来创建BigIntegers,也许这就是您所遇到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26489195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档