新坑,慢慢填 :huaji:
MD5
找四个特殊变量:
0x67452301, 0xefcdab89, 0x98badcfe, 0x10235476
MD5的初始变量一般都是定死的,除开特殊题目,出题人故意坑你
SHA-1
找5个特殊变量:
0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0
同MD5,SHA-1一样是定死的,除非出题人坑人
SHA-256/384/512
同上,这里列出相关初始量:
sha-256
h0= 0x6a09e667 h1= 0xbb67ae85 h2= 0x3c6ef372
h3= 0xa54ff53a h4= 0x510e527f h5= 0x9b05688c
h6= 0x1f83d9ab h7= 0x5be0cd19
sha-384
H0 = cbbb9d5dc1059ed8 H1 = 629a292a367cd507 H2 = 9159015a3070dd17
H3 = 152fecd8f70e5939 H4 = 67332667ffc00b31 H5 = 8eb44a8768581511
H6 = db0c2e0d64f98fa7 H7 = 47b5481dbefa4fa4
sha-512
6A09E66713BCC908 BB67AE8584CAA73B 3C6EF372FE94F82B
A54FF53A5F1D36F1 510E527FADE682D1 9B05688C2B3E6C1F
1F83D9ABFB41BD6B 5BE0CD19137E2179
SM4
SM4算法参考资料比较少,所以有些出题人为了降低难度,没有变动初始秘钥
看到这4组秘钥,可以粗略的认为是SM4加密。
[infobox title=”SM4加密流程:”]
1.期初输入128bit的密钥,与系统参数128bit进行异或
2.进入循环生成器,128bit分为4组ki,ki+1,ki+2,ki+3
3.分组1,2,3进行异或,再与固定参数进行异或
4.S盒置换
5.自身与自身的循环左移,循环右移进行异或
6.再与最初的ki进行异或,得到最终的结果
[/infobox]
所以SM4算法的特征就是:
1、有N个32周期轮回的子程序
2、置换表
图中的是默认的置换表,也可能会随着出题人的想法增加难度,产生变换
3、与置换表进行各种左移操作
Base-N
1、找到规则字符表。
例如:base64默认为:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
2、遇到字符末尾带=,考虑BASE-N算法
3、反汇编的时候看到大量的位移