În cifrurile bloc de rețea de substituție... permutare, cum ar fi AES, atunci când criptați un text simplu într-un text cifrat, fiecare bit al textului cifrat va fi asociat fiecărui bit din casetele S setate în cifr?
Am văzut Implementarea de referință Kuznyechik și am îndoieli dacă fiecare bit al textului cifrat va fi asociat cu fiecare bit al setului de casete S:
#define LS(x1,x2,t1,t2) { \
t1 = T[0][(octet)(x1)][0] ^ T[1][(octet)(x1 >> 8)][0] ^ T[2][(octet)(x1 >> 16 )][0] ^ T[3][(octet)(x1 >> 24)][0] ^ T[4][(octet)(x1 >> 32)][0] ^ T[5][( octet)(x1 >> 40)][0] ^ \
T[6][(octet)(x1 >> 48)][0] ^ T[7][(octet)(x1 >> 56)][0] ^ T[8][(octet)(x2)] [0] ^ T[9][(octet)(x2 >> 8)][0] ^ T[10][(octet)(x2 >> 16)][0] ^ T[11][(octet) (x2 >> 24)][0] ^ \
T[12][(octet)(x2 >> 32)][0] ^ T[13][(octet)(x2 >> 40)][0] ^ T[14][(octet)(x2 >> 48)][0] ^ T[15][(octet)(x2 >> 56)][0]; \
t2 = T[0][(octet)(x1)][1] ^ T[1][(octet)(x1 >> 8)][1] ^ T[2][(octet)(x1 >> 16 )][1] ^ T[3][(octet)(x1 >> 24)][1] ^ T[4][(octet)(x1 >> 32)][1] ^ T[5][( octet)(x1 >> 40)][1] ^ \
T[6][(octet)(x1 >> 48)][1] ^ T[7][(octet)(x1 >> 56)][1] ^ T[8][(octet)(x2)] [1] ^ T[9][(octet)(x2 >> 8)][1] ^ T[10][(octet)(x2 >> 16)][1] ^ T[11][(octet) (x2 >> 24)][1] ^ \
T[12][(octet)(x2 >> 32)][1] ^ T[13][(octet)(x2 >> 40)][1] ^ T[14][(octet)(x2 >> 48)][1] ^ T[15][(octet)(x2 >> 56)][1]; \
}