2016-05-18 87 views
0

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

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

+0

比较https://docs.oracle.com/javase/7/docs/technotes/guides/security/p11guide.html#Requirements和https://docs.oracle.com/javase/8/docs/technotes/指南/安全/ p11guide.html#要求你应该尝试java 8 – zapl

+0

请看这里:http://stackoverflow.com/questions/8056818/accessing-hardware-pkcs11-token-on-a-64-bit-machine – Eric

+2

为什么你用完了内存?签名过程真的是内存密集型吗? – Kayaman

回答

0

首先,你应该看看为什么的内存过程是密集的。这可能是因为你可以用私钥(填充,模幂运算,编码)来分解操作中的散列。签名过程需要太多内存才能表明有问题。它可以像直接拨打Signature#update而不是Signature#doFinal一样简单。

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

当你有一个非常高端的系统而没有有效的升级策略时,使用Java的过时版本来解决所有这些问题当然是一种遗憾。你应该首先着重解决这个问题。你也应该想知道为什么你无法获得64位PKCS#11 .dll适合你的情况。