Implementation of AES with Sage.
These programs need a correct installation of Sage (www.sagemath.org) to work.
##sage-aes.py sage-aes.py computes the AES's ciphering process from a plain text and a key. The result is as follow:
SR*(10,4,4,8)
Finite Field in a of size 2^8
a^8 + a^4 + a^3 + a + 1
a^6 + a^5 + a + 1
key schedule
key: 2b7e151628aed2a6abf7158809cf4f3c
[ a^5 + a^3 + a + 1 a^5 + a^3 a^7 + a^5 + a^3 + a + 1 a^3 + 1]
[ a^6 + a^5 + a^4 + a^3 + a^2 + a a^7 + a^5 + a^3 + a^2 + a a^7 + a^6 + a^5 + a^4 + a^2 + a + 1 a^7 + a^6 + a^3 + a^2 + a + 1]
[ a^4 + a^2 + 1 a^7 + a^6 + a^4 + a a^4 + a^2 + 1 a^6 + a^3 + a^2 + a + 1]
[ a^4 + a^2 + a a^7 + a^5 + a^2 + a a^7 + a^3 a^5 + a^4 + a^3 + a^2]
AES ciphering process ####
R[01].start 00102030405060708090A0B0C0D0E0F0
R[01].s_box 63CAB7040953D051CD60E0E7BA70E18C
R[01].s_row 6353E08C0960E104CD70B751BACAD0E7
R[01].m_col 5F72641557F5BC92F7BE3B291DB9F91A
R[01].k_sch D6AA74FDD2AF72FADAA678F1D6AB76FE
R[02].start 89D810E8855ACE682D1843D8CB128FE4
R[02].s_box A761CA9B97BE8B45D8AD1A611FC97369
R[02].s_row A7BE1A6997AD739BD8C9CA451F618B61
R[02].m_col FF87968431D86A51645151FA773AD009
R[02].k_sch B692CF0B643DBDF1BE9BC5006830B3FE
R[03].start 4915598F55E5D7A0DACA94FA1F0A63F7
R[03].s_box 3B59CB73FCD90EE05774222DC067FB68
R[03].s_row 3BD92268FC74FB735767CBE0C0590E2D
R[03].m_col 4C9C1E66F771F0762C3F868E534DF256
R[03].k_sch B6FF744ED2C2C9BF6C590CBF0469BF41
R[04].start FA636A2825B339C940668A3157244D17
R[04].s_box 2DFB02343F6D12DD09337EC75B36E3F0
R[04].s_row 2D6D7EF03F33E334093602DD5BFB12C7
R[04].m_col 6385B79FFC538DF997BE478E7547D691
R[04].k_sch 47F7F7BC95353E03F96C32BCFD058DFD
R[05].start 247240236966B3FA6ED2753288425B6C
R[05].s_box 36400926F9336D2D9FB59D23C42C3950
R[05].s_row 36339D50F9B539269F2C092DC4406D23
R[05].m_col F4BCD45432E554D075F1D6C51DD03B3C
R[05].k_sch 3CAAA3E8A99F9DEB50F3AF57ADF622AA
R[06].start C81677BC9B7AC93B25027992B0261996
R[06].s_box E847F56514DADDE23F77B64FE7F7D490
R[06].s_row E8DAB6901477D4653FF7F5E2E747DD4F
R[06].m_col 9816EE7400F87F556B2C049C8E5AD036
R[06].k_sch 5E390F7DF7A69296A7553DC10AA31F6B
R[07].start C62FE109F75EEDC3CC79395D84F9CF5D
R[07].s_box B415F8016858552E4BB6124C5F998A4C
R[07].s_row B458124C68B68A014B99F82E5F15554C
R[07].m_col C57E1C159A9BD286F05F4BE098C63439
R[07].k_sch 14F9701AE35FE28C440ADF4D4EA9C026
R[08].start D1876C0F79C4300AB45594ADD66FF41F
R[08].s_box 3E175076B61C04678DFC2295F6A8BFC0
R[08].s_row 3E1C22C0B6FCBF768DA85067F6170495
R[08].m_col BAA03DE7A1F9B56ED5512CBA5F414D23
R[08].k_sch 47438735A41C65B9E016BAF4AEBF7AD2
R[09].start FDE3BAD205E5D0D73547964EF1FE37F1
R[09].s_box 5411F4B56BD9700E96A0902FA1BB9AA1
R[09].s_row 54D990A16BA09AB596BBF40EA111702F
R[09].m_col E9F74EEC023020F61BF2CCF2353C21C7
R[09].k_sch 549932D1F08557681093ED9CBE2C974E
R[10].s_box 7A9F102789D5F50B2BEFFD9F3DCA4EA7
R[10].s_row 7AD5FDA789EF4E272BCA100B3D9FF59F
R[10].k_sch 13111D7FE3944A17F307A78B4D2B30C5
R[10].output 69C4E0D86A7B0430D8CDB78070B4C55A
##sage-aes-recover-stats.py
sage-aes-recover-stats.py computes a configurable small variant of the AES's ciphering process from a plain text and a key. Then he recovers the key by using Gröbner basis and prints some stats on the calculus.