我正在尝试对XML文档进行数字签名。为此,我有两个选择。有一个由爱沙尼亚认证中心创建的程序员库,还有一个脚本,运行一个由银行编写的Java代码。如果使用官方(认证中心)库,那么一切都会像魅力一样,稍加调整,但当涉及到银行脚本时,就会导致错误:
java.io.IOException: %1 is not a valid Win32 application.
esteid-pkcs11
at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.connect(Native Method)
at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.<init>(PKCS11Implementation.java:166)
at iaik.pkcs.pkcs11.wrapper.PKCS11Connector.connectToPKCS11Module(PKCS11Connector.java:75)
at iaik.pkcs.pkcs11.Module.getInstance(Module.java:202)
at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:46)
at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:29)
at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:21)
at client.Signer.main(Signer.java:36)
10:03:31 ERROR - Signing failed: PKCS11 initialization failed
java.lang.RuntimeException: PKCS11 initialization failed
at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:52)
at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:29)
at client.smartcard.SmartcardHelper.initialize(SmartcardHelper.java:21)
at client.Signer.main(Signer.java:36)
Caused by: java.io.IOException: %1 is not a valid Win32 application.
esteid-pkcs11
at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.connect(Native Method)
at iaik.pkcs.pkcs11.wrapper.PKCS11Implementation.<init>(PKCS11Implementation.java:166)
at iaik.pkcs.pkcs11.wrapper.PKCS11Connector.connectToPKCS11Module(PKCS11Connector.java:75)
at iaik.pkcs.pkcs11.Module.getInstance(Module.java:202)
at client.smartcard.SmartcardHelper.initializePKCS11Module(SmartcardHelper.java:46)
... 3 moreEsteid-pkcs11文件是一个特定于国家的dll文件.我在谷歌上读过很多关于同样错误导致的问题的回应,但似乎没有任何一个回复能做到这一点。我已经安装了JDK(64位)和JRE(32位)。我想,可能我尝试打开的.dll文件是32位,所以我将JAVA_HOME路径更改为32位JRE,但是它写的如下
无法在amd 64位平台上加载IA 32位.dll .
所以我想这不是比特的问题。在处理了几个小时的环境变量之后,我觉得这可能是银行脚本的一个问题。情况会是这样吗?如果不是,还有什么会导致这个错误呢?
编辑:很明显,我尝试使用C库进行签名,但在使用Java库时,它给了我一个错误。
java.io.IOException: %1 is not a valid Win32 application. opensc-pkcs11.dll
我100%肯定opensc-pkcs11.dll是一个64位的dll,但我想知道控制台是否没有访问system32文件夹的权限。情况会是这样吗?
发布于 2018-02-16 10:07:14
误差
原因: java.io.IOException:%1不是有效的Win32应用程序。
这是我试图通过Sun PKCS#11提供程序从64位PKCS#11环境中使用32位PKCS#11 DLL时得到的结果。
当我切换到64位PKCS#11 DLL时,错误不再发生.
我认为你的‘崇敬-pkcs11 11’文件是一个32位DLL。
发布于 2019-11-28 15:56:39
也许opensc-pkcs11.dll包含对同一目录中其他dll的引用。
我与Gemalto (Safenet) crpytoki.dll也有类似的错误。解决方案是将包含cryptoki.dll的目录放到Windows中。
https://stackoverflow.com/questions/17207967
复制相似问题