java - 由 : sun. security.pkcs11.wrapper.PKCS11Exception 引起:CKR_DATA_INVALID

标签 java pkcs#11

我的应用程序生成 xml 签名时遇到问题,但只是在 Windows 上发生,我在 Linux 上没有问题,用 jre 7 和 jre 8 证明,谢谢提前。

    java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: E

    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:547)
    at java.security.Signature$Delegate.engineSign(Unknown Source)
    at java.security.Signature.sign(Unknown Source)
    at org.apache.xml.security.algorithms.implementations.SignatureBaseRSA.engineSign(SignatureBaseRSA.java:130)
    at org.apache.xml.security.algorithms.SignatureAlgorithm.sign(SignatureAlgorithm.java:173)
    at org.apache.xml.security.signature.XMLSignature.sign(XMLSignature.java:614)
    at bo.accl.clientelynx.Signer.firmar(Signer.java:283)
    at bo.accl.clientelynx.Signer.sign(Signer.java:168)
    at bo.accl.clientelynx.Signer.apply(Signer.java:350)
    at bo.accl.clientelynx.Signer.apply(Signer.java:61)
    at com.google.common.collect.Iterators$8.transform(Iterators.java:860)
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
    at bo.accl.clientelynx.App$17.doInBackground(App.java:1130)
    at bo.accl.clientelynx.App$17.doInBackground(App.java:1095)
    at javax.swing.SwingWorker$1.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at javax.swing.SwingWorker.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DATA_INVALID
    at sun.security.pkcs11.wrapper.PKCS11.C_Sign(Native Method)
    at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:538)

最佳答案

搜索CKR_DATA_INVALID后我发现错误是:

The plaintext input data to a cryptographic operation is invalid. This return value has lower priority than CKR_DATA_LEN_RANGE.

参见:http://www.cryptsoft.com/pkcs11doc/v220/pkcs11__all_8h.html#aCKR_DATA_INVALID

我的客人是您在 Windows 和 Linux 之间的数据存在编码问题。检查您的数据文件以查找无效的 Windows 字符。

关于java - 由 : sun. security.pkcs11.wrapper.PKCS11Exception 引起:CKR_DATA_INVALID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31921939/

相关文章:

java - Retrofit2正在解析json里面的json

java - FeignClient 使用 application/x-www-form-urlencoded body 创建 POST

Java IAIK Pkcs11 包装器生成的 key 未保留

python - PKCS11 总是会以相同的顺序找到对象吗?

java - 从文件中读取两个 Int 值时出现问题

java - 未安装 map 时应用程序将关闭

java.security.KeyStoreException : PKCS11 not found

c++ - 如何在cryptoki中重命名容器名称

c# - C# 中的 PKCS #11 库

java - 如何检查在editText中插入的文本是否存在于SQLite数据库中,如果存在则返回一条消息,如果不存在则返回不同的消息