java山东单一窗口报文加签

java山东单一窗口报文加签

写这玩意死了一片脑细胞,刚刚报文生成成功,有帮到你请点个赞,直接上代码。

			//创建Reference
            XMLSignatureFactory fac = XMLSignatureFactory.getInstance();
            Transform envelopedTransform =
                    fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec)null);
            DigestMethod sha1DigMethod = fac.newDigestMethod(DigestMethod.SHA1, null);
            Reference refToRootDoc = fac.newReference("", sha1DigMethod,
                    Collections.singletonList(envelopedTransform), null, null);
            //创建SignedInfo
            CanonicalizationMethod c14nWithCommentMethod =
                    fac.newCanonicalizationMethod(
                            CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
                            (C14NMethodParameterSpec) null);
            SignatureMethod dsa_sha1SigMethod =
                    fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
            SignedInfo signedInfo =
                    fac.newSignedInfo(c14nWithCommentMethod,
                            dsa_sha1SigMethod,
                            Collections.singletonList(refToRootDoc));
            KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA");
            kpGen.initialize(1024);
            KeyPair keyPair = kpGen.generateKeyPair();
            PublicKey publicKey   = keyPair.getPublic();
            PrivateKey privateKey = keyPair.getPrivate();
            FileInputStream fis = new FileInputStream("F://014d89d7.cer");
            BufferedInputStream bis = new BufferedInputStream(fis);
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            while (bis.available() > 0) {
                Certificate cert = cf.generateCertificate(bis);
                System.out.println(cert.toString());
            KeyInfoFactory kfac = KeyInfoFactory.getInstance();
            X509Data X509 = kfac.newX509Data(Collections.singletonList(cert));
            KeyName keyName = kfac.newKeyName("014d89d7");
            List<Object> klist = new ArrayList();
            klist.add(X509);
            klist.add(keyName);
            KeyInfo keyInfo = kfac.newKeyInfo(klist);;
            XMLSignature signature = fac.newXMLSignature(signedInfo, keyInfo);
            org.w3c.dom.Document doc = parse(document);
            DOMSignContext dsc = new DOMSignContext(privateKey, doc.getDocumentElement());
            signature.sign(dsc);
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer = tf.newTransformer();
            DOMSource source=new DOMSource(doc);
            transformer.transform(source, new StreamResult(System.out));
            StreamResult result = new StreamResult(new File("F:\\old.xml"));
            transformer.transform(source,result);
            }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值