当前位置: 首页 > news >正文

中国江西网官方网站做国外网站做什么内容

中国江西网官方网站,做国外网站做什么内容,wordpress 权限 页面,可以做猫头像的网站介绍 如您所知#xff0c;XML在我们的产品或项目开发中起着重要作用#xff0c;并且从XML文档中我们收集了很多信息#xff0c;而且我们可以对XML文件执行CRUD操作。 但是#xff0c;关于如何确保XML文件中可用的数据是真实的以及数据来自受信任的可靠来源#xff0c;这是… 介绍 如您所知XML在我们的产品或项目开发中起着重要作用并且从XML文档中我们收集了很多信息而且我们可以对XML文件执行CRUD操作。 但是关于如何确保XML文件中可用的数据是真实的以及数据来自受信任的可靠来源这是一个令人关注的问题。 关于来自XML文件的数据的真实性或独创性可能存在许多问题。 对于开发人员而言不考虑数据真实性而处理XML文档是一种惯例。 但是在某些情况下您需要解决以上各行提出的所有观点和问题。 让我们考虑一下现实世界的情况每当我们收到邮局的信件或邮件时我们如何知道这封信是来自我们的朋友的 它基于他/她的典型陈述或单词或地址详细信息。 这可能是他/她的角色签名。 有时我们收到的信件也可能被陌生人通过添加另一页所修改。 由于所有这些原因我们通常会验证朋友的手写签名。 这都是关于普通邮局的信。 电子讯息呢 我们如何验证电子消息的真实性 在这种情况下我们必须采用该技术进行数字签名。 在本文中我将简要介绍XML数字签名它对我们的数据完整性起着重要作用。 在本文中我将向您展示如何将数字签名附加到XML文档以及如何使用附加的签名验证XML文档。 技术性 在过去的两年中XML Digital Signature获得了强劲的发展尤其是在金融领域。 在开始使用XML Digital签名之前让我们考虑一个典型的场景以供我们理解。 考虑一个组织以XML文档的形式将其雇员的所有工资详细信息发送给所得税部门的情况。 现在是一个问题所得税部门如何验证XML文件 这意味着IT部门必须验证组织中所有员工的敏感信息。 IT部门必须确保XML文档来自受信任的来源并且在进入IT部门时尚未对其进行修改。 这意味着文档之间没有进行调整。 首先我们必须了解数字签名的概念。 数字签名是一种电子签名用于验证受信任人员发送的文档的真实性。 它还可以确保文档原始内容在传输过程中没有被修改。 数字签名可以与任何消息一起使用无论它是否经过加密以便接收者可以确定发送者的身份并且该消息不会被陌生人更改。 根据Wikipedia的说法数字签名是一种数学方案用于证明数字消息或文档的真实性。 有效的数字签名使收件人有理由相信该邮件是由已知的发件人创建的从而使发件人无法否认已发送了该邮件身份验证和不可否认并且该邮件在传输过程中没有发生更改完整性。 数字签名通常用于软件分发金融交易以及在其他情况下检测伪造或篡改非常重要的情况。 让我们看一个带有数字签名的完整XML文档。 ?xml version1.0 encodingUTF-8 standaloneno?SalaryDepositOrganisationNameDDLab Inc/NameAccountNoSBC-12345789/AccountNo/OrganisationEmployeesEmpNameJohn Abraham/NameAccountNoSB-001/AccountNoAmount1234/Amount/EmpEmpNameBipasha Basu/NameAccountNoSB-002/AccountNoAmount2334/Amount/EmpEmpNameVidya Balan/NameAccountNoSB-003/AccountNoAmount3465/Amount/EmpEmpNameDebadatta Mishra/NameAccountNoSB-007/AccountNoAmount5789/Amount/EmpEmpNamePriti Zinta/NameAccountNoSB-009/AccountNoAmount1234/Amount/Emp/EmployeesSignature xmlnshttp://www.w3.org/2000/09/xmldsig#SignedInfoCanonicalizationMethod Algorithmhttp://www.w3.org/TR/2001/REC-xml-c14n-20010315/SignatureMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#rsa-sha1/Reference URITransformsTransform Algorithmhttp://www.w3.org/2000/09/xmldsig#enveloped-signature//TransformsDigestMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#sha1/DigestValuebHS6uf8KbJV4AGzoHNHLfnXvKM/DigestValue/Reference/SignedInfoSignatureValue aUEMrCT5dzeOfSNaznzoT0If8WZ8KQcMNXDqtoeseonVk3NqOk9ctcxrf3QVX3wP6810DDRPdI6le8ccG64Ge0HjkOaYC5c2L/qKBzwtSbl/olJEuFU2DVxBQOK29TTUJfxpVzC9Zf2pvT1NRj0f2/ofHujYZ01D6YqI8c/SignatureValueKeyInfoKeyValueRSAKeyValueModulus jfAd5uV38L36lDZJrqfH9oLN86VJezXYfAeUlrFoHlKAXVJLAi9hKvBHQRer4tPfdez6iSBKsl6IHkPnVRAKt0xU99uxi5QpymsWAX3qnBqHlw9Z70PwyZXysfw4Q2tK2HtSgUOhMuaUcIf9sbHvfgbvcRPgxDZZqfIzDmDU/ModulusExponentAQAB/Exponent/RSAKeyValue/KeyValue/KeyInfo/Signature /SalaryDeposit 上面的XML文件是经过数字签名的文件可以在任何时间进行验证。 上面的XML文件包含有关员工姓名帐号和薪水金额的信息。 但是实际的数字签名附加在标签Signature / Signature中。 Signature中的信息提供了文档的真实性。 由于可以看到数据因此可以自由更改数据但是在签名验证过程中将失败。 基本上存在三种类型的XML签名。 信封签名 信封签名 分离的签名 信封签名 在这种情况下签名是经过签名的XML对象的子级。 这意味着Signature是邮件XML文档中的子XML标记。 以下是信封数字签名的结构。 RootElement Signature …………………… /Signature / RootElement 在本文中我将向您介绍如何创建封装的XML数字签名。 信封签名 在这种情况下XML文档仍保留在Signature对象中。 这意味着Signature标记将成为已签名XML文档的根元素。 以下是信封数字签名的概述。 Signature MyXMLDocument … / MyXMLDocument /Signature分离签名 在这种情况下数字签名是独立生成的并且不是XML文档的一部分。 这意味着您将有两个XML文件一个是要签名的XML文件另一个是XML签名。 让我们看一下XML文档的骨架结构。 Signature ………….. /Signature 现在让我们在下面看到典型XML数字签名的骨架结构。 Signature xmlns SignedInfo CanonicalizationMethod Algorithm / SignatureMethod Algorithm / Reference URI Transforms Transform Algorithm / /Transforms DigestMethod Algorithm / DigestValue/DigestValue /Reference /SignedInfo SignatureValue/SignatureValue KeyInfo KeyValue RSAKeyValue Modulus/Modulus Exponent/Exponent /RSAKeyValue /KeyValue /KeyInfo /Signature XML标签Signature基本上包含3个子标签。 它可以被视为 Signature SignedInfo/SignedInfo SignatureValue/SignatureValue KeyInfo/KeyInfo /Signature 这里的Signature是XML数字签名概念的根元素并且它是W3C所必须遵循的协议。 SignedInfo元素是您签名的信息。 SignatureValue包含带有Base64编码内容的实际签名最后KeyInfo表示公共密钥。 再次让我们看一下SignedInfo标签。 SignedInfo的结构如下。 SignedInfo CanonicalizationMethod Algorithmhttp://www.w3.org/TR/2001/REC-xml-c14n-20010315/ SignatureMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#rsa-sha1/ Reference URI Transforms Transform Algorithmhttp://www.w3.org/2000/09/xmldsig#enveloped-signature/ /Transforms DigestMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#sha1/ DigestValuebHS6uf8KbJV4AGzoHNHLfnXvKM/DigestValue /Reference /SignedInfo 在java中创建XML数字签名时SignedInfo对象用于在数字签名的Signature标签内创建一个元素。 这也是W3C建议的XML数字签名协议的一部分。 现在让我们看一下下面的XML标签KeyInfo结构。 KeyInfo KeyValue RSAKeyValue Modulus/Modulus Exponent/Exponent /RSAKeyValue /KeyValue /KeyInfo KeyInfo标记包含数学计算的信息基本上它包含公钥的模数和指数。 为了创建XML数字签名请遵循以下步骤。 生成一对称为私钥和公钥的密钥。 获取原始XML文档。 通过Java API使用私钥和公钥对原始XML文档签名然后生成另一个具有XML数字签名的文档。 让我们看一下用于生成XML数字签名的简短Java代码段。 public void generateXMLDigitalSignature(String originalXmlFilePath, String destnSignedXmlFilePath, String privateKeyFilePath, String publicKeyFilePath) { //Get the XML Document object Document doc getXmlDocument(originalXmlFilePath); //Create XML Signature Factory XMLSignatureFactory xmlSigFactory XMLSignatureFactory.getInstance(DOM); PrivateKey privateKey new KryptoUtil().getStoredPrivateKey(privateKeyFilePath); DOMSignContext domSignCtx new DOMSignContext(privateKey, doc.getDocumentElement()); Reference ref null; SignedInfo signedInfo null; try { ref xmlSigFactory.newReference(, xmlSigFactory.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(xmlSigFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)), null, null); signedInfo xmlSigFactory.newSignedInfo( xmlSigFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), xmlSigFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref)); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } catch (InvalidAlgorithmParameterException ex) { ex.printStackTrace(); } //Pass the Public Key File Path KeyInfo keyInfo getKeyInfo(xmlSigFactory, publicKeyFilePath); //Create a new XML Signature XMLSignature xmlSignature xmlSigFactory.newXMLSignature(signedInfo, keyInfo); try { //Sign the document xmlSignature.sign(domSignCtx); } catch (MarshalException ex) { ex.printStackTrace(); } catch (XMLSignatureException ex) { ex.printStackTrace(); } //Store the digitally signed document inta a location storeSignedDoc(doc, destnSignedXmlFilePath); }XML签名验证 XML数字签名验证涉及以下操作。 验证数字签名 计算SignedInfo元素的摘要 为了验证签名的XML文档请按照下列步骤操作。 同时获取签名的XML文档和公共密钥。 验证SignedInfo元素的数字签名 计算SignedInfo元素的摘要并比较这些值。 让我们看一下XML数字签名验证的简短Java代码段。 public static boolean isXmlDigitalSignatureValid(String signedXmlFilePath, String pubicKeyFilePath) throws Exception { boolean validFlag false; Document doc getXmlDocument(signedXmlFilePath); NodeList nl doc.getElementsByTagNameNS(XMLSignature.XMLNS, Signature); if (nl.getLength() 0) { throw new Exception(No XML Digital Signature Found, document is discarded); } PublicKey publicKey new KryptoUtil().getStoredPublicKey(pubicKeyFilePath); DOMValidateContext valContext new DOMValidateContext(publicKey, nl.item(0)); XMLSignatureFactory fac XMLSignatureFactory.getInstance(DOM); XMLSignature signature fac.unmarshalXMLSignature(valContext); validFlag signature.validate(valContext); return validFlag; } 因此从上面的代码中可以明显看出可以使用SignatureMethod元素中指定的摘要算法重新计算SignedInfo元素的摘要值并使用公钥来验证XML签名以验证该值SignatureValue元素的摘要对于SignedInfo元素的摘要值是正确的。 在SignedInfo元素内重新计算引用的摘要并将它们与每个Reference元素的相应DigestValue元素中包含的摘要值进行比较。 仍然让我们熟悉一些负责XML数字签名的java组件。 XMLSignatureFactory 它是一个工厂对象用于使用“ DOM”机制类型为XML文档生成数字签名。 以下列方式创建对象。 XMLSignatureFactory factory XMLSignatureFactory.getInstance(DOM);DOMSignContext DOMSignContext对象用于形成DOM树其中在创建数字签名时将附加XML数字签名。 该对象接受私钥和XML文档的根元素。 参考 引用对象用于在XML数字签名的主要Signature标签的SignedInfo元素内作为元素创建。 该对象创建一个标签作为W3C XML签名语法和处理规则的一部分。 参考元素的基本结构如下。 Reference URI Transforms Transform Algorithmhttp://www.w3.org/2000/09/xmldsig#enveloped-signature/ /Transforms DigestMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#sha1/ DigestValuebHS6uf8KbJV4AGzoHNHLfnXvKM/DigestValue /ReferenceSignedInfo 类似地SignedInfo对象用于在数字签名的Signature标签内创建一个元素。 这也是W3C建议的XML数字签名协议的一部分。 基本结构如下。 SignedInfo CanonicalizationMethod Algorithmhttp://www.w3.org/TR/2001/REC-xml-c14n-20010315/ SignatureMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#rsa-sha1/ Reference URI Transforms Transform Algorithmhttp://www.w3.org/2000/09/xmldsig#enveloped-signature/ /Transforms DigestMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#sha1/ DigestValuebHS6uf8KbJV4AGzoHNHLfnXvKM/DigestValue /Reference /SignedInfoXML签名 最后创建XMLSignature对象以形成签名标签该签名标签用作附加到XML文档的信封。 按照W3C准则这是XML数字签名的根元素。 完整的结构如下。 Signature xmlnshttp://www.w3.org/2000/09/xmldsig# SignedInfo CanonicalizationMethod Algorithmhttp://www.w3.org/TR/2001/REC-xml-c14n-20010315/ SignatureMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#rsa-sha1/ Reference URI Transforms Transform Algorithmhttp://www.w3.org/2000/09/xmldsig#enveloped-signature/ /Transforms DigestMethod Algorithmhttp://www.w3.org/2000/09/xmldsig#sha1/ DigestValuebHS6uf8KbJV4AGzoHNHLfnXvKM/DigestValue /Reference /SignedInfo SignatureValueaUEMrCT5dzeOfSNaznzoT0If8WZ8KQcMNXDqtoeseonVk3NqOk9ctcxrf3QVX3wP6810DDRPdI6l e8ccG64Ge0HjkOaYC5c2L/qKBzwtSbl/olJEuFU2DVxBQOK29TTUJfxpVzC9Zf2pvT1NRj0f 2/ofHujYZ01D6YqI8c/SignatureValue KeyInfo KeyValue RSAKeyValue ModulusjfAd5uV38L36lDZJrqfH9oLN86VJezXYfAeUlrFoHlKAXVJLAi9hKvBHQRer4tPfdez6iSBKsl 6IHkPnVRAKt0xU99uxi5QpymsWAX3qnBqHlw9Z70PwyZXysfw4Q2tK2HtSgUOhMuaUcIf9sbHvf gbvcRPgxDZZqfIzDmDU/Modulus ExponentAQAB/Exponent /RSAKeyValue /KeyValue /KeyInfo /Signature 要完全理解请从该站点下载完整的Netbeans项目其中包含完整的源代码。 组态 您可以从此站点下载Java中XML数字签名的完整项目也可以从下面的保管箱链接下载。 https://www.dropbox.com/s/0k1iukhy0in6n8h/xmldigitalsignature1.zip 您可以在您喜欢的Java IDE中配置该项目然后运行测试源文件夹中提供的独立程序。 该项目已经包含私钥和公钥。 如果要生成请运行Java类“ TestGenerateKeys”以生成一对密钥。 您还可以提供自己的XMl文件的路径以查看XML数字签名是如何生成的。 结论 希望您喜欢我关于Java中的XML数字签名的文章。 创建XML数字签名的方法也很多我仅提供了使用Java API生成封装的数字XML签名的方法。 下载完整的项目并查看源代码以了解概念及其用法。 为了更清楚起见我在资源和参考部分中提供了一些基本链接。 如有任何问题和错误请随时通过debadatta.mishragmail.com与我联系。 资源与参考 http://en.wikipedia.org/wiki/XML_Signature http://msdn.microsoft.com/en-us/library/ms996502.aspx http://www.xml.com/pub/a/2001/08/08/xmldsig.html 翻译自: https://www.javacodegeeks.com/2013/10/xml-security-with-digital-signature-in-java.html
http://www.zqtcl.cn/news/264239/

相关文章:

  • 网站后台添加表格wordpress垂直分页导航插件
  • 重庆网站建设有限公司六安市裕安区建设局网站
  • 北京产品网站建设如何做移动支付网站
  • 做同城购物网站赚钱吗设计企业网站流程
  • 网站要用什么软件做建设工程施工合同专属管辖
  • 模板网站建设制作佛山正规网站建设哪家好
  • 飞虎队网站建设网络公司起名大全
  • 如何发布自己的网站视频8首页制作代码
  • 网站开发实用案例教程普陀网站制作
  • 建一个网站需要哪些知识招远网站建设
  • 文章标题-栏目名称-网站名 dede环保网站设计建设论文
  • centos wordpress建站北京专门做网站的
  • wordpress网站的彻底清理百度网站联系方式
  • 网站建设签收单网页制作模板的作用
  • 已购买域名 如何做网站网络规划设计师通过率多少
  • 酒店网站建设需求分析wordpress iis
  • 烟台网站建设服务新钥匙网站建设
  • 帝国cms网站地图生成器行业网站建设哪家专业
  • 免费推广网站大全wordpress更改图片大小
  • 中航建设集团网站vps网站无法通过ip访问
  • 学生求职网站的需求分析怎么做江西手机版建站系统开发
  • 电商网站开发文献综述嵌入式软件开发项目
  • 网站备案怎样提交管局网站建设基本步骤
  • 国外优秀电商设计网站开发网站公司推荐
  • 国外企业网站建设模型网站建设谈客户说什么
  • 肖港网站开发公司网站的用途
  • 百度网站置顶怎么做效果图制作设计
  • 自适应企业网站用什么框架做重庆在线观看
  • 网站做301重定向的作用辽宁网站建设电话
  • 抚州市建设局官方网站高端网页设计人才