《加密与解密》笔记六(一)

来源:互联网 发布:catia软件销售怎么样 编辑:程序博客网 时间:2024/05/16 10:41

加密算法:
我们的加密算法主要分为:
1:单向散列算法;
2:对称加密算法;
3:公开密钥加密算法;
4:一些其他的算法;
这次我主要记录的就是单向散列加密算法
单向散列算法简单说就是将任意长度的消息固定转换为某一固定长度的摘要,以此来进行一些验证(在很多的游戏等程序的完整性检测就是主要检查每个程序的信息摘要是否符合原来的文件的摘要,之所以称之为单向是因为这个转换是不可逆的,所以我们就算知道了一个重要文件的摘要也几乎不能对其做什么(除了暴力枚举,当然,这个一般是不可能做到的)

1:MD5

1:原理:

1:

填充到与512的倍数小64位的一个长度,并且最少填充1位最大填充512位,然后对这个数据进行增长,增长64位,如果之前已经是大于64位的了,那么就取原来的数据的低64位为后面的就可以,这样一来所得的到的数据就是512的整数倍了。

2:

初始化数据(这个数据表非常有用(用于初步估计一个程序是否使用了MD5的非常基本的一个方法))
分为4组数据:
A:01234567
B:89ABCDEF
C:FEDCBA98
D:76543210

3:

数据处理:这里描述繁杂,直接上图吧。
这里写图片描述

2:

应用。

1:

这个应用就是涉及到之前我提及的验证文件等信息的正确性,但是有一点:
这里写图片描述
这个样子的验证,我们只需要直接把验证NOP了或者修改验证对比就可以了,MD5的用武之地就没了,不是很好。

2:

破解的话就先寻找之前提到的4个常数就好,一般都是OK的,当然,还是要进一步确认的。

2:SHA算法:

函数序列:
这里写图片描述
初始化数据:
SHA-1:
这里写图片描述
这里写图片描述
SHA-256:
这里写图片描述
SHA-384:
这里写图片描述
SHA-512:
这里写图片描述
这里鉴别的方法其实和MD5类似的,如果查内存发现了上面的值的话我们就可以咱叔估测这个程序内可能还有SHA算法那么再经过后面的逆向定位以后就可以写出这个程序的注册机出来。

原创粉丝点击