一、软件授权的思路主要分为以下步骤
1、获得被授权计算机的唯一标识,例如CPU编码、硬盘编码、MAC地址等。
2、将标志内容编码为不可被识别的加密数值——注册码。
3、授权方将注册码解码。
4、在注册码中添加时间限制以及其它携带信息并编码为不可被识别的加密数值——序列号。
5、被授权电脑上获得序列号后,将其解码判断标志内容和日期是否符合,并将序列号保存以备以后启动时判断。
二、这个步骤中有几个知识点:1、获取唯一标识;2、编码算法;3、将时间等信息添加入注册码中。
1和3的解决办法有很多,而2——编码算法上,我们需要选取可逆向解码并且保证编码后的内容不易产生碰撞不易被破解。
三、编码算法
我这里选用的是AES算法
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
-
AddRoundKey:矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
-
SubBytes:通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
-
ShiftRows:将矩阵中的每个横列进行循环式移位。
-
MixColumns:为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。
AES密钥扩展算法的输入值是4个字(16字节),输出值是一个由44个字组成(176字节)的一维线性数组。
四、下面是我做的一个相关应用示例
https://download.csdn.net/download/Hilaph/12888852