摘要在一台服务器上创建,然后传递到另一台服务器,使用令牌/加密狗进行签名。密码API可以很好地与PKCS11 prvoider配合使用。
Cipher c = Cipher.getInstance("RSA");
c.init(Cipher.ENCRYPT_MODE, pk);
DigestInfo di = new DigestInfo(new DefaultDigestAlgorithmIdentifierFinder().find("SHA-256"), hash);
byte[] digestInfo = di.getEncoded();
byte[] data = c.doFinal(digestInfo);但在SunMSCAPI provider中使用加密API时,私钥被视为公钥,不需要询问令牌密码,生成的签名验证失败。此外,将密码与私钥一起使用也不是正确的方法(这里也会讨论- https://bugs.openjdk.java.net/browse/JDK-7050158 )。
如何在避免再次创建摘要的同时使用签名API?"NONEWithRSA“收到的输出不正确,因为我的摘要是"Sha-256”,签名验证将失败。
发布于 2017-06-17 13:57:16
已尝试读取SunMSCAPI的源代码。当使用"NONEWithRSA“时,它根据摘要长度找出摘要类型。对于签名,必须对摘要信息(AlorithmId+Digest)进行签名,因此传递给签名API的数据超过摘要长度,并且SunMSCAPI抛出传递的摘要不支持的数据长度错误。
看起来对于签名,它不可能使用预先创建的摘要与SunMSCAPI提供者。尽管同样适用于Pkcs11提供程序。
https://stackoverflow.com/questions/44584297
复制相似问题