java %3ckv%3e_XML数字签名Java

我需要在JAVA中对我的

XML消息进行数字签名:

生成的XML签名应具有以下格式:

DsP5NLca+plhp9tZvGwykfb2whQYt3CQ5sbsVd9Q9aE=

LrfE0po3YPvVxB/m77iBWWiR07Ghiuhuj7tO2C2LKqZK2cLrAiidt+3tjbJ3m16quCFxfh7bmjRtJsGi7a3HKtK

qY4auqrjNB62AtYrxvm+7Qd/cRacom4e3M9uF9JD1zTfoGun9w4WDfDrDaoZ+ZwUgNtf6sTYO5Ctcj5sYcD0=

7D665C81ABBE1A7D0E525BFC171F04D276F07BF2

任何人都可以提供一些代码帮助?

编辑:

我想出了这段代码:

private static Document sign(Document doc) throws InstantiationException,IllegalAccessException,ClassNotFoundException,NoSuchAlgorithmException,InvalidAlgorithmParameterException,KeyException,MarshalException,XMLSignatureException,FileNotFoundException,TransformerException {

String providerName = System.getProperty("jsr105Provider","org.jcp.xml.dsig.internal.dom.XMLDSigRI");

XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM",(Provider) Class.forName(providerName).newInstance());

Reference ref = fac.newReference("",fac.newDigestMethod(DigestMethod.SHA256,null));

// Create the SignedInfo

SignedInfo si = fac.newSignedInfo(

fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,(C14NMethodParameterSpec) null),fac.newSignatureMethod(SignatureMethod.RSA_SHA1,null),Collections.singletonList(ref));

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");

kpg.initialize(512);

KeyPair kp = kpg.generateKeyPair();

KeyInfoFactory kif = fac.getKeyInfoFactory();

KeyValue kv = kif.newKeyValue(kp.getPublic());

KeyInfo ki = kif.newKeyInfo(Collections.singletonList(kv));

DOMSignContext dsc = new DOMSignContext(kp.getPrivate(),doc.getDocumentElement());

XMLSignature signature = fac.newXMLSignature(si,ki);

signature.sign(dsc);

TransformerFactory tf = TransformerFactory.newInstance();

Transformer trans = tf.newTransformer();

trans.transform(new DOMSource(doc),new StreamResult(new FileOutputStream("mySignedFile")));

return doc;

}

但问题是我得到了:

并不是 :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值