加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 您可以通过这种方式验证许可证吗?

发布时间:2020-12-16 23:24:05 所属栏目:百科 来源:网络整理
导读:我有一个 XML文件,描述了产品获得许可的公司名称,版本和一些额外信息. 看起来像这样 Licence Namesdfsdf/Name Version1.2.1.1/Version NumberOfServer4/NumberOfServer/Licence 然后,我使用私钥签署此fiel并获取 Licence Namesdfsdf/Name Version1.2.1.1/Ver
我有一个 XML文件,描述了产品获得许可的公司名称,版本和一些额外信息.

看起来像这样

<Licence>
  <Name>sdfsdf</Name>
  <Version>1.2.1.1</Version>
  <NumberOfServer>4</NumberOfServer>
</Licence>

然后,我使用私钥签署此fiel并获取

<Licence>
  <Name>sdfsdf</Name>
  <Version>1.2.1.1</Version>
  <NumberOfServer>4</NumberOfServer>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>M368eFB9ydifttSxX26sB6XiPV4=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>TTYP6d+zESn6/2PtL5ikN+7E9u8Njm32vYVyVANC5U0EGLBwS//3yPjUoBx3glJXHClzPQBQEUi0LJNauTFvo1IBYwLjAuaYGtleti4IXpjrQCVaIudETSv5Z7oB8+C/+nsqsC26fXf9vWxvaKXJJzcep88r0wIfVe31HSd18FU=</SignatureValue>
  </Signature>
</Licence>

然后我在应用程序中发送公钥并读取文件以确保它们具有正确的版本,并且“NumberOfServers”作为许可证密钥用于.

这种方法的缺点是什么?

谢谢

解决方法

我建议的一件事是滚动你自己的XML文件签名方法.我最初使用SignedXml类进行许可,但后来意识到,通过查看XML文件本身(因为指定了算法等),任何人都非常容易地推断出我在做什么.

因此,我将每个数据(客户编号,许可证密钥和版本)组合在一起,对其进行哈希处理,并对结果进行签名,而不是整个XML文件.然后我对它进行了更多的混淆,并将数据作为许可证中的单个“数据”元素添加.

只要看一下,我就不可能看到任何关于我使用的算法或过程的指标.当然,任何人都可以轻松地在Reflector中打开我的程序集,看看它是如何被验证的.但是,由于每个许可证的副本都存档,如果我怀疑客户已经更改了许可证以便为他们提供更多功能,我可以与我的人员核实他们的副本,并拒绝给予任何进一步的支持和/或采取法律行动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读