mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-11 03:26:17 +08:00
Updated SM4 with AESENCLAST (markdown)
parent
25d407e0ea
commit
3c3235efde
@ -435,11 +435,21 @@ def matrix_from_cols(cols):
|
|||||||
k = 7 - i
|
k = 7 - i
|
||||||
j = 1 << k
|
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])
|
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
|
return m
|
||||||
|
|
||||||
|
|
||||||
def gen_matrix_based_table(table):
|
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]])
|
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
|
# AES ShiftRows
|
||||||

|

|
||||||
|
Loading…
x
Reference in New Issue
Block a user