Я работаю над проектом, в котором используется цифровая подпись, как физическая, так и нет (смарт-карта или файл). Мне нужно подписать сто кусков xml-кода на файл, сейчас файлов 2500, значит 2500 * 100 = 250 000 раз. При использовании сертификата (файла) a1 требуется 2 секунды на файл. Когда я пробую смарт-карту, для каждого файла требуется 30 секунд, то есть для всех файлов потребуется почти 21 час, что слишком долго. Я хотел бы знать, имел ли кто-нибудь дело с этим, кстати, это код Java, следует фрагмент.
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());
}