truelicense简要说明.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
truelicense简要说明

truelicense简要说明分类:?java2012-08-01 21:38?1844人阅读?评论(3)?收藏?举报解密byte虚拟机加密引擎java使用trueLicense来做软件产品的保护,我们主要使用它的LicenseManager类来生成证书文件、安装证书文件、验证证书文件.假设我们已为我们软件的使用者提供了证书,下面的流程图为简略的trueLicense验证证书文件的流程。LicenseEngine是我们自己写的一个引擎类,它封装了一些业务逻辑,以方便外部进行调用,我们验证license文件时,首先要安装license文件,安装license文件就是把文件形式的license文件(数字签名过的普通文本文件)转换成GenericCertificate对象,这个以及其他的持久化操作是由de.schlichtherle.xml.PersistenceService类提供的。GenericCertificate是一个起纽带作用的类,也是truelicense最底层最核心的类。它对最底层的javax.crypto包下类的方法进行了逻辑封装,truelicense上层在生成license文件时对其数字签名以及在验证证书内容时解密证书内容就是借助它来完成的。安装license文件和调用verify()方法时都会进行certification的验证和license内容的校验。从LicenseManager的install()方法的源码中可以看出我们最好让LicenseManager为单例,只要虚拟机一直运行,在安装license时,install方法会通过setCertificate(certificate)来设置系统当前的certificate,注意LicenseManager是线程安全的类,使用得当的情况下单例也不会出现线程问题。以下是install方法的源码。validate(LicenseContent?content)方法会验证证书的基本内容,最主要的是验证内容是对比当前日期和证书上的有效期。trueLicense的验证机制是当验证失败后,直接抛出异常。下面简要说明如何生成license文件首先license文件是被数字签名的普通文本信息,我们需要一个私钥库来生成私钥来用于加密,我们相应也需要一个从私钥库中导出的公钥来解密,我们可以使用JAVA的Toolkit来生成私钥库。(1)命令行下:keytool?-genkey?-alias?privatekey?-keystore?privateKeys.store???此时生成私钥库。别名很重要?请务必记下来。此时会提示你输入keyStore的密码,注意此时有个小陷阱,请务必把密码设置为数字和小写字母的混合体,原因会在后面说明。(2)然后把私匙库内的公匙导出到一个文件当中:keytool?-export?-alias?privatekey?-file?certfile.cer?-keystore?privateKeys.store(3)然后再把这个证书文件导入到公匙库:keytool?-import?-alias?publiccert?-file?certfile.cer?-keystore?publicCerts.store这个公钥库要随软件一起发布给用户。生成license文件依然需要用到LicenseManager类从它实现的接口上看知道其既有创建License的职责又有验证License文件的职责。调用LicenseManager的实例方法store(LicenseContent,?File)即可生成license文件。?下面是LiicenseManager类构造器的源码。?public?LicenseManager(LicenseParam?param)?{????????setLicenseParam0(param);?}生成一个LicenseManager类的实例,需要一个LicenseParam类型的形参。下面是LicenseParam的继承体系它持有生成license和验证license时所需要的一些对象。注意这里的subject和LicensContent的subject必须一致,否则不能通过验证而抛出异常。KeyStoreParam是根据公、私匙库的参数抽象出的类,在底层操作公私钥库时需要这些具体的参数(如通过alias来找到具体的钥库等下面是简要的license文件生成的时序图。简单说来就是对licenseContent的byte[]形式先进行签名,然后将byte[]以文件的形式输出。

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档