加密算法
常见的加密编码等算法解析包括: MD5、SHA、ASC、进制、时间戳、URL、BASE64、AES、DES等
常见加密形式算法解析:直接加密、带salt、带密码、带偏移、带位数、带模式、带干扰、自定义组合等;
常见解密方式:枚举、自定义逆向算法、可逆向
MD4
介绍:
在执行MD4算法前,首先需要对输入的内容进行填充和分段。对于长于448位的信息,在其后添加一个1和n个0,使其按位长度对512求余后值为448。随后用64位的输入长度信息附加在已经填充好的原始信息后,使其长度为512 的整数倍。每次处理一段(512位),输出四个32位字。
MD4算法中包括四个32位无符号整数类型的参数H1、H2、H3、H4,四个参数在处理第一块内容前初始化为 H1=0x67452301、H2=0xefcdab89、H3=0x98badcfe、H4=0x10335476。在计算完第 i 块后,将更新这四个值作为第 i+1 块的输入。计算完最后一块,它们就作为MD4算法对整个输入内容的计算结果。
算法中涉及到不同的三类参数:常数y[j]、访问输入内容的索引z[j]、移位次数s[j]。整个算法分为3轮,每轮16步。
实现:
MD5
介绍:MD4由于加密过程中所涉及到的部分变量是固定不变的(比如参数y[i]在每轮加密中是固定不变的),因此安全性不高。所以产生了MD5加密算法来优化。MD5整体上和MD4算法相同,输出也是128位 (4个32位)。额外优化体现在:MD5是不可逆加密算法。
- 算法由3轮增加到了4轮;
- 每步算法中增加了一个加法操作;
- 访问消息的索引z[j]和移位次数s[j]发生了变化;
- 常数y[j] 由每轮相同更改为每轮不同;
- 第二轮中非线性函数g() 发生了变化。
更新后的参数列表:
实现:
SHA-1
介绍:SHA-1 算法参考 MD4 算法进行了实现。SHA-1 算法将输入字符串分为了若干个512位长的段,每次处理一个段然后输出5个32位字。同理在处理前需要对待处理字段进行填充,使得长度为512的整数倍。初始时的5个整数为:H0 = 0x67452301、H1 = 0xefcdab89、H2 = 0x98badcfe、H3 = 0x10325476、H4 = 0xc3d2e1f0。计算完第i 块后,更新这五个值作为第 i+1 块的输入。
参数:
实现:
SHA-2
介绍: SHA-2 算法包括了一系列散列函数:SHA-224、SHA-256、SHA-384、SHA-512等等。应用最广泛的就是SHA-256/ SHA-512。
详细介绍 SHA-256 算法的实现细节:首先对输入字段进行分段处理,每段大小为512位,如果段长大于448位就在字段后补充一个1和n个0使得总的字段长度为512的整数倍。每次对一段进行处理,输出8个32位字的结果,该结果作为下一轮的参数输入。最终处理完所有块后就是最终结果。
涉及到的主要数据体:信息块M[0:15](16个32位字)
、扩展信息块W[0:63](64个32位字)
、常量K[0:63](64个32位字)
、摘要H[0:7] = [0x6a09e667,0xbb67ae85、0x3c6ef372、0xa54ff53a、0x510e527f、0x9b05688c、0x1f83d9ab、0x5be0cd19]
实现: