提问人:user22897558 提问时间:11/11/2023 最后编辑:Progmanuser22897558 更新时间:11/12/2023 访问量:23
如何解决签名和验证之间封装xml签名时原始数据的差异?
How to solve the diffenece of originaldata when enveloping xml signature between sign and verify?
问:
DigestMethod sm3DigMethod = fac.newDigestMethod(DOMDigestMethod.SM3, null);
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setNamespaceAware(true);
Document signatureDoc = docBuilderFactory.newDocumentBuilder().parse(new ByteArrayInputStream(data));
XMLStructure content = new DOMStructure(signatureDoc.getDocumentElement());
XMLObject obj = fac.newXMLObject(Collections.singletonList(content), "object", (String) null, (String) null);
CanonicalizationMethod c14nWithCommentMethod =
fac.newCanonicalizationMethod("http://127.0.0.1/TR/2001/REC-xml-c14n-20010315#WithComments", (C14NMethodParameterSpec) null);
SignatureMethod sm2_sm3SigMethod = fac.newSignatureMethod(DOMSignatureMethod.SM2_SM3, null);
SignedInfo signedInfo = fac.newSignedInfo(c14nWithCommentMethod, sm2_sm3SigMethod, Collections.singletonList(refToRootDoc));
KeyInfoFactory keyInfoFac = fac.getKeyInfoFactory();
KeyValue keyValue = keyInfoFac.newKeyValue(publicKey);
KeyInfo keyInfo = keyInfoFac.newKeyInfo(Collections.singletonList(keyValue));
XMLSignature signature = fac.newXMLSignature(signedInfo, keyInfo, Collections.singletonList(obj), null, null);
DOMSignContext dsc = new DOMSignContext(privateKey, signatureDoc);
signature.sign(dsc);
签名时:原始数据在此处输入图像描述
验证时:原始数据在此处输入图像描述
我觉得签名部分的代码有问题,希望能用实际的原文签名。我需要做什么
答: 暂无答案
评论