mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-11 03:26:17 +08:00
Updated SM4 with AESENCLAST (markdown)
parent
86540c2671
commit
3475d28c0b
@ -18,3 +18,55 @@ Two known (M1, C1, M2, C2), please reference [sm4 with AESENCLAST](https://gist.
|
|||||||
{(M1, C1, M2, C2) | SM4-S(x) = A2(AES-S(A1(x)), A1(x) = M1*x + C1, A2(x) = M2*x + C2}
|
{(M1, C1, M2, C2) | SM4-S(x) = A2(AES-S(A1(x)), A1(x) = M1*x + C1, A2(x) = M2*x + C2}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**How to calculate M, C from lookup table?**
|
||||||
|
|
||||||
|
1.The first element of the table, T[0] should be the C.
|
||||||
|
2.Use T[1] XOR T[0], T[2] XOR T[0], T[4] XOR T[0], T[8] XOR T[0], T[16] XOR T[0], T[32] XOR T[0], T[64] XOR T[0], T[128] XOR T[0] to calculate matrix M.
|
||||||
|
|
||||||
|
Below is sample
|
||||||
|
```
|
||||||
|
1 2 3 4 5 6 7 8
|
||||||
|
|
||||||
|
00000110 01110011 01110101 11100101 11100011 10010110 10010000 01010110
|
||||||
|
0x00, 0x06, 0x73 0x75 0xE5 0xE3 0x96 0x90 0x56
|
||||||
|
1 10100010
|
||||||
|
2 01001001
|
||||||
|
3 11111011
|
||||||
|
4 00001001
|
||||||
|
5 10101011
|
||||||
|
6 01000000
|
||||||
|
7 11100010
|
||||||
|
8 00010010
|
||||||
|
9
|
||||||
|
|
||||||
|
00010010
|
||||||
|
00001001
|
||||||
|
01001001
|
||||||
|
10100010
|
||||||
|
01010110
|
||||||
|
11100101
|
||||||
|
01110011
|
||||||
|
00000110
|
||||||
|
|
||||||
|
1 2 3 4 5 6 7 8
|
||||||
|
|
||||||
|
00111100 10101001 11111010 10110110
|
||||||
|
0x00 0x3c 0xa9 0xfa 0xb6
|
||||||
|
1 11011100
|
||||||
|
2 10101111
|
||||||
|
3
|
||||||
|
4 11011101
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8 10111111
|
||||||
|
|
||||||
|
10111111
|
||||||
|
11011101
|
||||||
|
10101111
|
||||||
|
11011100
|
||||||
|
10110110
|
||||||
|
11111010
|
||||||
|
10101001
|
||||||
|
00111100
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user