【发布时间】:2016-09-21 14:27:21
【问题描述】:
我正在开发一个使用数字签名的项目,无论是物理的还是非物理的(智能卡或文件)。 我需要为每个文件签署一百个 xml 代码,现在有 2500 个文件,所以这意味着 2500 * 100 = 250,000 次。使用 a1 证书(文件)时,每个文件需要 2 秒。当我尝试使用智能卡时,每个文件需要 30 秒,这意味着所有文件都需要将近 21 小时,这太长了。 我想知道是否有人处理过这个问题,顺便说一句,它是 Java 代码,后面是一个 sn-p。
Element elemento = (Element) document.getElementsByTagName(elementName).item(0);
elemento.setIdAttribute("id", true);
String id = elemento.getAttribute("id");
Init.init();
ElementProxy.setDefaultPrefix(Constants.SignatureSpecNS, "");
XMLSignature sig = new XMLSignature(document, "", XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256);
elemento.getParentNode().appendChild(sig.getElement());
{
Transforms transforms = new Transforms(document);
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_OMIT_COMMENTS);
sig.addDocument("#" + id, transforms, "http://www.w3.org/2001/04/xmlenc#sha256");
}
XmlUtils.trimWhitespace(document);
XmlUtils.scapeChars(document);
{
X509Certificate cert = certificadoBean.getCertificate();
sig.addKeyInfo(cert);
sig.sign(certificadoBean.getPrivateKey());
}
【问题讨论】:
标签: java security digital-signature smartcard digital-certificate