在64位JAVA上支持PKCS11

时间:2016-05-18 08:19:44

标签: java digital-signature pkcs#11

有什么办法可以让64位java支持PKCS11模块吗?

在32位Java上支持PKCS11模块,它也可以正常工作。当我使用32位Java时,我的签名过程总是耗尽内存。我目前有128GB的ram,所以我想为我的签名过程分配超过4gb,这在32位版本上是不可能的。

1 个答案:

答案 0 :(得分:0)

首先,你应该看为什么内存进程是密集的。可能是您可以使用私钥(填充,模幂运算,编码)从操作中分解出散列。签名过程占用了大量内存,这表明出现了问题。它可以像直接调用Signature#update而不是Signature#doFinal一样简单。

至于32位.dll,不能只是将它加载到64位应用程序(如JVM)中。例如,看看here,看看这不起作用。当然有办法解决它;创建一个单独的64位进程,使用您自己的Java提供程序中的自己的SignatureSpi类连接到该进程(需要使用Oracle提供的密钥进行签名)。毋庸置疑,这对于修复应该起作用的东西来说是很多工作。

当你拥有一个非常高端系统没有有效的升级策略时,使用不推荐使用的Java版本来解决所有这些麻烦当然是一种耻辱。你应该专注于先修复它。您还应该想知道为什么不能为您的情况获得64位PKCS#11 .dll