文档章节

用哈希链实现软件试用期

八风不动
 八风不动
发布于 2018/07/11 13:01
字数 454
阅读 19
收藏 0

设计一个哈希链: 

激活码生成:用公钥(或公钥的一部分)对称加密时间戳,再用私钥签名。 

初次启动时,使用公钥文件校验激活码签名,解密时间戳,然后用公钥和时间戳生成一个 hash,创建哈希链文件。 

启动时扫描哈希链文件,校验整条哈希链,同时校验哈希链尾部的时间戳和本次启动时间。 

运行时每隔一段时间(例如 15 分钟)就用当前系统时间和哈希链的尾端 hash 共同生成一个 新的 hash,追加到 hash 链尾部。

 

later codeing:  https://github.com/aiportal/licensen-chain

 

1. 使用私钥对授权内容 (时间、IP、MAC 等) 进行签名。

2. 使用公钥的一部分加密授权内容和签名。

3. 软件启动时, 读取本地公钥文件, 解密授权内容并验证签名。

4. 使用加密后的授权内容生成第一个hash。

5. 软件每运行一段时间(15分钟或一个小时),就使用前一个hash和当前系统时间,软件累计运行时间,共同生成一个新的hash。

6. 所有的 hash 内容都写入到本地的一个 hash 链文件中。

7. 软件每次启动时校验公钥、授权文件和 hash 链,如果系统时间被修改或超出了软件试用期,拒绝启动。

 

 

© 著作权归作者所有

共有 人打赏支持
八风不动
粉丝 34
博文 37
码字总数 11048
作品 2
天津
架构师
私信 提问
加载中

评论(1)

八风不动
八风不动
1. 使用私钥对授权内容 (时间、IP、MAC 等) 进行签名。

2. 使用公钥的一部分加密授权内容和签名。

3. 软件启动时, 读取本地公钥文件, 解密授权内容并验证签名。

4. 使用加密后的授权内容生成第一个hash。

5. 软件每运行一段时间(15分钟或一个小时),就使用前一个hash和当前系统时间,软件累计运行时间,共同生成一个新的hash。

6. 所有的 hash 内容都写入到本地的一个 hash 链文件中。

7. 软件每次启动时校验公钥、授权文件和 hash 链,如果系统时间被修改或超出了软件试用期,拒绝启动。
用 Go 构建一个区块链 -- Part 2: 工作量证明

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录...

liuchengxu
2017/09/26
0
0
【译】Swift算法俱乐部-哈希表

本文是对 Swift Algorithm Club 翻译的一篇文章。 Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下...

Andy_Ron
2018/11/15
0
0
区块链研习 详解三种主要跨链技术,如何推动价值网络的实现

  2017年以来,区块链项目井喷状出现。截至2017年底,GitHub上的项目数超过8万,另据coinmarketcap数据显示,目前已有token种类达到1506个,总市值超过4000亿美元。   但是在区块链项目数...

雷锋网
2018/02/05
0
0
1749:区块链:密码算法

每周学习十小时,这是2017年第49周的学习笔记 本周继续学习区块链,读了一本书。 区块链——技术驱动金融 有些内容看的时候还不是太理解,但想到李笑来说的,就算看不懂也要硬着头皮看下去,...

唐晓阳
2017/12/10
0
0
200 行代码实现一个简单的区块链

英文原文:Lauri Hartikka 区块链的基础概念很简单:一个分布式数据库,存储一个不断加长的 list,list 中包含着许多有序的记录。然而,在通常情况下,当我们谈到区块链的时候也会谈起使用区...

程序师
2018/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
9
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
2
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部