密文特征分析
MD5、sha1、HMAC算法、NTLM等相似加密类型
1、MD5
示例——63A9F0EA7BB98050796B649E85481845
MD5 实质是一种消息摘要算法,一个数据的 MD5 值是唯一的,同一个数据不可能计算出多个不同的 MD5 值,但是,不同数据计算出来的 MD5 值是有可能一样的,知道一个 MD5 值,理论上是无法还原出它的原始数据的,MD5 主要特征如下:
- 密文一般为 16 位或者 32 位,其中 16 位是取的 32 位第 9~25 位的值;
- 组成方式为字母(a-f)和数字(0-9)混合,字母可以全部是大写或者小写。
除了通过密文特征来判断以外,我们还可以搜索源代码,标准 MD5 的源码里是包含了一些特定的值的,没有这些特定值,就无法实现 MD5:
- 0123456789ABCDEF、0123456789abcdef
- 1732584193、-271733879、-1732584194、271733878
PS:某些特殊情况下,密文的长度可能不止 16 位或者 32 位,通常是在 16 位的基础上,左右填充了一些随机字符串。
明文 | 32位[大写] | 63A9F0EA7BB98050796B649E85481845 |
---|---|---|
root | 32位[小写] | 63a9f0ea7bb98050796b649e85481845 |
16位[大写] | 7BB98050796B649E | |
16位[小写] | 7bb98050796b649e |
md5的三个特征:
- 确定性:一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值。
- 碰撞性:原始数据与其MD5值并不是一一对应的,有可能多个原始数据计算出来的MD5值是一样的,这就是碰撞。
- 不可逆:给出一个MD5值,无法通过它还原出它的原始数据的。由它的算法所决定,一个给定的MD5值是可能对应多个原始数据的,并且理论上讲是可以对应无限多个原始数据,所有无法确定到底是由哪个原始数据产生的。
2、sha1
示例——dc76e9f0c0006e8f919e0c515c66dbba3982f785
这种加密的密文特征与 MD5 类似,位数是40。
SHA 是比 MD5 更安全一点的摘要算法,SHA 通常指 SHA 家族算法,分别是 SHA-1、SHA-2、SHA-3,其中 SHA-2 是 SHA-224、SHA-256、SHA-384、SHA-512 的并称,SHA-3 是 SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256 的并称,其名字的后缀的数字就代表了结果的大小(bit)。
SHAKE 算法结果的大小并不是固定的,其他算法特征如下:
- SHA-1:字母(a-f)和数字(0-9)混合,固定位数 40 位;
- SHA-224/SHA3-224:字母(a-f)和数字(0-9)混合,固定位数 56 位;
- SHA-256/SHA3-256:字母(a-f)和数字(0-9)混合,固定位数 64 位;
- SHA-384/SHA3-384:字母(a-f)和数字(0-9)混合,固定位数 96 位;
- SHA-512/SHA3-512:字母(a-f)和数字(0-9)混合,固定位数 128 位。
3、HMAC算法
示例——5b696ae7da9442ead7adc24d03cedb65
HMAC (Hash-based Message Authentication Code) 常用于接口签名验证,这种算法就是在前两种加密的基础上引入了秘钥,而秘钥又只有传输双方才知道,所以基本无法破解。
文档信息
- 本文作者:Nattevak
- 本文链接:https://HLuKT.github.io/2023/06/05/%E5%AF%86%E6%96%87%E7%89%B9%E5%BE%81%E5%88%86%E6%9E%90/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)