我目前正在做一个JavaCard项目(v.2.2.2),我需要使用平方根、对数等来计算值……
我知道JavaCard应用程序接口中没有Math类,我想知道是否有其他库提供这样的操作?
此外,我不能使用double值,但我需要使用。有没有办法在JavaCard应用编程接口中表示SQRT值并执行操作(如double、sqrt等)?
感谢任何人的帮助!
发布于 2013-05-23 19:19:29
javacard 2.2.2只支持boolean、byte、short和可选的int。如果你真的需要执行Math,那么你需要用棘手的方法创建你自己的类,当然结果并不精确。
最佳实践是卡只存储数据并进行简单的计算/加密,而服务器/终端端计算复杂的事情。在卡中存储双精度的解决方法是使用字节数组。
发布于 2018-12-05 17:03:29
从2.2.2开始,JavaCard应用编程接口中有一个功能有限的javacardx.framework.math包(仅限加、减、乘)。但是,物理卡通常不支持,即使支持,它也可能是only 8 bytes long。
JCAlgTest现在还提供所有JavaCard包的结果,包括数据库(包括javacardx.framework.math)中的卡支持的所有版本。
或者,您可以考虑尝试使用JCMathLib library。该库仅使用公共JC调用来提供任意长度的BigInteger (以及ECPoint操作),并且是旧版BigNat library的改进版本。它将消耗大约1KB内存,并需要支持ECC的卡(如果您喜欢使用ECPoint,仅对于BigInteger不是必需的)。实现部分在硬件中完成(使用RSA和ECC协处理器),部分在软件中完成,因此对旁路和故障诱导攻击的抵抗力较小。
https://stackoverflow.com/questions/15363244
复制相似问题