2016-05-18 86 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適合你的情況。