ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

许可证加解密

2019-08-30 19:04:08  阅读:279  来源: 互联网

标签:license signature 加解密 sha 许可证 md5 数据 MD5


license服务器
根据菜单选项制作明文,包括了:
    序列号:基于硬件特殊mac计算
    signature:文件利用公钥计算
    功能选项:url过滤,病毒扫描,云查杀等一些特有服务功能
    pem:.pem这种文件就是一个X.509的数字证书,里面有用户的公钥等信息
    
加解密过程:
文件数据(4的倍数检查)->EVP_DecodeBlock(4:3)->license_enc(通过key)->buff

1、base64编解码

license文件是base64编码,需要转换为base编码
base64是将字符的assic码,转换为都在0-64的可见范围内,不会有特殊符号“:”等影响数据头,从而影响解析
字符8位只取低6位,高补0,也就是3个8位变4个6位。
这里有可能会末尾signature多“=”,由于之前的license文件的位数不是6的倍数
解码时候需要删除=右边数据

Base64编码函数

Void EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
功能:进行Base64数据编码, 适用于小量数据。
参数:t:[OUT]编码后的数据。F:[IN]待编码的数据。N:[IN]待编码数据的长度
返回值:编码后的数据长度。

Base64解码函数

Void EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
功能:进行Base64数据解码, 适用于小量数据。
参数:t:[OUT]解码后的数据。F:[IN]待解码的数据。N:[IN]待解码数据的长度
返回值:解码后的数据长度。

2、rc4加解密
在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。
它加解密使用相同的密钥,因此也属于对称加密算法
由于RC4算法加密是采用的xor,所以,一旦子密钥序列出现了重复,密文就有可能被破解
根据固定字符串生成rc4_key,进行解密,生成明文,得到了license的内容和signature
密钥长度范围为 1-256 字节,没有任何的分析对于密钥长度达到128位的RC4有效
license_passwd[16]="legendsecbeijin";

3、sha一致性判断
安全哈希算法(Secure HashAlgorithm),接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文
HA-1与MD5 的最大区别在于其摘要比MD5 摘要长 32bit
获取serial_num和signature之间的内容,生成sha值,
signature=后面的内容是base64编码,需要先去掉=和=右边多的内容,
rsa解密后,得到明文,然后计算得到sha值,
解密得到的sha和自己生成的sha对比判断是否一致

MD5最后生成的摘要信息是16个字节,SHA1是20个字节

4、RSA_verify,RSA是一种非对称算法
对称算法:有发送密钥的过程,双方密钥一致
非对称算法:一方或者机构生成一对密钥,有公钥和私钥,私钥自己保存,发送公钥,可以互解密
数字签名:非对称加密算法,机构颁发公钥私钥,公钥公开,私钥为公司做license服务器私有

根据publickey解密signature内容,rsa解密后得到明文


5、md5值判断是否重复导入
(Message Digest algorithm 5,信息摘要算法),一般利用md5来验证文件下载是否完整
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

根据signature之前内容,生成md5值
第一次根据license_back文件存放的上次导入的md5值对比判断重复
第二次根据文件中的md5值对比判断重复导入

6、序列号的计算加解密
根据mac地址计算md5
根据md5计算sha
根据sha标准输出40位16进制
12d660f3e63744676772337af652afcf04a588dc

7、bash的计算和加解密
根据mac地址计算出serial num
srand(tm)设置产生一系列伪随机数发生器的起始点
tm+rand()+serial===>xxx
计算xxx的md5输出,保存到文件/secgate/etc/conf/license/

解密就是md5输出和输入字符串之间两者关系解密,和serial无关了
时间1800秒,30分钟update一次

导入过程:
    安全    
        校验硬件序列号
        检查文件生产时间
        检查文件内容sha
        检查重复导入md5
    时间
        分类覆盖
        计算叠加
    意外
        初始
        时间更新
    告警
        一天一次
        5秒一次

序列号        serial
生产时间    grant_time
功能项目    mode
签名        signature

标签:license,signature,加解密,sha,许可证,md5,数据,MD5
来源: https://blog.csdn.net/ctylihuai/article/details/100164262

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有