版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/winform-authority-license.html
转载时必须以链接形式注明原始出处及本声明。
版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/winform-authority-license.html
转载时必须以链接形式注明原始出处及本声明。
前述:
这是一则比较蛋疼的前述。
我在http://sxw.ptbird.cn 个税计算的授权版本中提到过,我自己搞了一个C# winform的授权验证方案,为什么要搞这个东西?因为我一开始写软件忽略了授权验证这个东西,真的是忽略了!
因为我本身并不是做C# Winform开发的,所以我也不知道这个授权到底应该怎么弄,网上也没有一个适合我的说法。因此当我把软件写出来之后,就面临是否要进行授权的方案,如果要进行授权,那么应该怎么搞。
根据我自己之前的一些积累和相关内容的查阅,最后我还是根据自己的想法,设计和实现了一套授权验证策略。
我把它称之为 postbird_license,典型的C/S架构实现的授权验证服务。
描述:
其实催生它的原因很简单,就是因为我确实不知道软件的授权验证方式应该怎么处理。
我想这个问题可能不仅仅我有,或许每个winform的开发者都应该有自己的一套授权验证方式,前提是想做授权,说句大白话就是软件是需要付费才能用滴!
为什么叫做可扩展软件授权验证解决方案,其实很简单,因为这个授权验证的方案,与软件本身并没有特别直接的联系,即使像我一样,一开始忘记了去设计授权,后面也是很容易和轻松地加上去。
因为我不知道是不是所有的授权都是这么设计的,我也不知道这个叫法是否正确。(反正是自己起的名字,任性挡不住)
下面是我的debug的一个分支版本,也是最早的是时候用到的,软件打开后,如果没有授权,则需要第一次授权验证。
只有授权验证通过才能使用软件进入主要的winform。
实现:
几个关键点:
1、保证本机验证的确定性。(本机验证需要保留授权许可证明,不需要每次验证授权)
2、保证授权的可靠性。
3、保证授权的内容的多变性。
授权验证的流程:
1、判断本机是否已经授权了,若没有授权则进行授权。
2、输入姓名和相关的授权码以及验证码发送验证请求。
3、server进行授权验证的判断。
4、记录本机授权信息。
5、授权结束。
一、本机授权的验证策略(机器标记码)
首先,获取本机的各种码,这一点很关键,在我开源的版本中,获取了Mac地址,获取了CPU序列号,获取了硬盘ID,获取了网卡硬件地址,获取了计算机名(计算机名最后没用,万一改名字还要重新授权,比较麻烦,但是也是一个不错的选择)。
为什么要拿到这么多码?
开源的版本中我是采用了txt文本的方式记录了一个机器码,这个机器码是我自己生成的,生成的方式很简单,将各种码通过一些随机的字符进行拼接,拼接后再通过MD5加密,然后进行des的加密成一个机器码的串,写入文本中,并保存