1.MD5简介
MD5(Message Digest Algorithm5)是一种广泛使用的哈希函数,用于计算消息摘要或校验和。
MD5 算法将任意长度的消息作为输入,并输出一个固定长度(128bit)的摘要,通常表示为32个十六进制字符。
MD5的特点:
唯一性:对于不同的输入,MD5摘要几乎是唯一的,即使输入的消息只有微小的变化,生成的摘要也会有很大的差异。
不可逆性:MD5算法是单向的,无法从摘要还原出原始的消息。
高效性:MD5的计算速度较快,适用于处理大量数据。
然而由于MD5算法的设计存在一些弱点,它已不再被广泛应用于安全性较高的场景,如密码存储等。由于其容易收到碰撞攻击和预映射攻击的影响,建议使用更加安全的哈希算法,如SHA-256、SHA-512等。
MD5是一种摘要算法。MD5通过哈希函数生成输入内容的摘要,这一过程是不可逆的。也即哈希后的结果无法经过任何算法还原回去,既然不能还原,也就不能称之为解密。那么哈希的过程也就不能称为加密了。
虽然无法解密,但是可以用彩虹表/哈希碰撞将密文还原出来,所以它不是安全的。通过加盐多次哈希,每次生成一个不同的密码一定程度上可以缓解。
2.加密算法&摘要算法
摘要算法
摘要算法,又称哈希算法、散列算法。通过一个函数,将任意长度的内容转换为一个固定长度的数据串。常用于检查数据是否被篡改。
摘要算法通过哈希函数给出输入(data)内容的摘要(digest),这一过程是单向的,计算很容易,但通过摘要反推输入却非常困难。而且,对原始输入做出一个bit的修改,都会导致计算出的摘要完全不同。因此可以用于检测数据是否被篡改。
加密算法
加密:以某种特殊的算法改变原有的信息,使得未授权的用户即使获得已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。
解密:加密的逆过程称为解密,即将该加密信息转化为其原始信息的过程。
根据加密解密过程中使用的密钥是否相同可以分为对称加密和非对称加密。
总结
加密算法的目的是: 防止信息被偷看
摘要算法的目的是: 防止信息被篡改
3.Hashcat
我们可以通过哈希碰撞来根据摘要反推原始数据。随着硬件的发展,GPU每秒可以执行上亿次的运算,简单的数据的摘要可能被破解。
Hashcat 是世界上最快的密码破解程序,是一个支持多平台、多算法的开源的分布式工具。
官网:https://hashcat.net/hashcat/
简单示例:
- [ Basic Examples ] -
Attack- | Hash- |
Mode | Type | Example command
==================+=======+==============================================================
Wordlist | $P$ | hashcat -a 0 -m 400 example400.hash example.dict
Wordlist + Rules | MD5 | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule
Brute-Force | MD5 | hashcat -a 3 -m 0 example0.hash ?a?a?a?a?a?a
Combinator | MD5 | hashcat -a 1 -m 0 example0.hash example.dict example.dict
实例:
.\hashcat.exe -m 2611 -a 3 799fad18ac5b28e725db0178f9c81e59:KKDZ8q --increment --increment-min 3 --increment-max 8 ?d?d?d?d?d?d?d?d -O
-m:指定哈希类型
-a:指定破解模式
--increment:指定密码长度范围
-O:开启优化
可以看到八位纯数字加盐后的摘要信息,只需要2s即可破解成功还原出原文。
参考:
https://zhuanlan.zhihu.com/p/584023300
https://zhuanlan.zhihu.com/p/387999509
https://www.sqlsec.com/2019/10/hashcat.html
https://blog.csdn.net/weixin_45329947/article/details/122580895
https://www.cnblogs.com/zpchcbd/p/17300782.html
https://blog.csdn.net/weixin_67986174/article/details/124828702