diff --git a/SM4-with-AESENCLAST.md b/SM4-with-AESENCLAST.md index 2c96c82..81c76e1 100644 --- a/SM4-with-AESENCLAST.md +++ b/SM4-with-AESENCLAST.md @@ -435,11 +435,21 @@ def matrix_from_cols(cols): k = 7 - i j = 1 << k m.SetRow(i, [(cols[0] & j) >> k, (cols[1] & j) >> k, (cols[2] & j) >> k, (cols[3] & j) >> k, (cols[4] & j) >> k, (cols[5] & j) >> k, (cols[6] & j) >> k, (cols[7] & j) >> k]) + return m def gen_matrix_based_table(table): return matrix_from_cols([table[0x80] ^ table[0], table[0x40] ^ table[0], table[0x20] ^ table[0], table[0x10] ^ table[0], table[0x08] ^ table[0], table[0x04] ^ table[0], table[0x02] ^ table[0], table[0x01] ^ table[0]]) + +def gen_matrix_based_high_low(high, low): + table = [] + for i in range(16): + for j in range(16): + table.append(high[i] ^ low[j]) + return gen_matrix_based_table(table) + +print(gen_matrix_based_high_low([0x00,0x50,0x14,0x44,0x89,0xd9,0x9d,0xcd,0xde,0x8e,0xca,0x9a,0x57,0x07,0x43,0x13], [0xd3,0x59,0x38,0xb2,0xcc,0x46,0x27,0xad,0x36,0xbc,0xdd,0x57,0x29,0xa3,0xc2,0x48])) ``` # AES ShiftRows ![image](https://github.com/emmansun/gmsm/assets/7235232/12b2527c-84d7-4831-81dc-031275d49cb7)