软件激活功能

1 说明

为了保证应用程序只能运行在指定的设备上,就需要对每台设备做标识,而设备与设备之间不能改变的差异就是硬件信息,比如设备型号、cpu的id号、MAC地址和其他出厂信息;为了保证我们的标识不被第三方用某些手段解析出来,我们这里使用了HASH算法和RSA验签机制;

  • HASH 算法

    使用HASH算法中的SHA256来转换设备的敏感信息,该算法能很好的放大不同信息的差异,并且转换出的信息无法逆向推出原文;

  • RSA 验签

    验签涉及到加密和解密两个过程,加密和解密各需要一般钥匙:公钥、私钥;
    如果用公钥加密,私钥解密,那么加密后的密文只能被私钥持有者解析出来,本软件使用的这种方式;
    如果用私钥加密,公钥解密,那么所有的公钥持有者都能解析密文,并且能够确认该密文是密钥持有者(可信方)所发放并没有被第三方修改;

2 软件框架

2.1 流程图

2.2 硬件信息

硬件信息由三部分组成:cpu_id、serial_no、mac_addr,这三部分需要拼接成一个字符串;

2.3 机器码

用 SHA256 算法转化硬件信息字符串(长度不限),然后输出一个固定长度为64字节(256bit)的字符串;

2.4 公钥、私钥

在本软件中,公钥和私钥不能单独存放,需要编译到可执行程序中,但是 RSA 加密和解密时需要读取文件,所以在使用的时候需要会把公钥或密钥写入临时创建的文件,使用完毕后立即删除;

2.5 密文

机器码经过 RSA 公钥加密得到密文,密文存放在本地目录中,然后验签方会用 RSA 私钥解密获取对应的原文;

2.6 对比

对比是比较“机器码”和“原文”,“机器码”是当前程序读取硬件信息转换出来的,“原文”是用密钥从密文里解析出来的,如果它们内容相同,即表示激活成功,内容不同表示激活失败;测试中,如果把这段密文和应用程序转移到其他设备上去,那么转换出的机器码和解析出的原文会有很大的差异,无法匹配;

猜你喜欢

转载自blog.csdn.net/qq_33236581/article/details/112100384