决定还是找个地方记录下自己的心得,困惑和成长,就是是一段回忆了,第一次写,篇幅比较短
之前发现诸如付款码等的二维码都有着时效性(好像是5分钟),这让我联想到了平常游戏或者软件,需要通过购买激活码以激活游戏,网上查激活码的实现方法,现在都是推荐的联网数据库比对激活,没办法,只好自己试着去实现这个功能,激活码的时效为一小时,总结后分一下几类:
第一类:
我觉得就是用户现场买,时效为一小时,暂时以理论上的方法实现为主,外界因素不在考虑范围内(现在还不会,摊手),原理是将当前时间进行设置,令分钟和秒钟为零,再获取当前时间的毫秒值并进行加密,作为激活码,软件接收到激活码时进行相应的解码,判断激活码的时间和当前时间是否在一小时以内。
下面开始具体步骤;通过将Date对象获取当前系统的毫秒值currentTime,并将分钟、秒钟清零,但是在这里我发现一个小问题,当前系统的毫秒值单位是毫秒,将秒钟设置为零时设置的单位是秒,所以我们需要手动将多余的毫秒值设置为零。
弊端: 激活前修改当前系统时间,即可无限次使用同一个激活码。
解决方案: 联网
第二类:
第二类方法主要是联网验证激活码,在本地多开一个线程,用来做试用倒计时,时间到达后将禁止试用软件,用户需要购买激活码并联网,软件通过将数据库有效激活码数据与用户输入数据进行比对来判断激活码是否有效,这是现在主流的校验方式