Реализация ГОСТА 28147-89 (Магма) на python
Пример вывода в консоль
|_____ 1 РАУНД _____|
n2: 1000 0001 0100 0001 1000 0001 0100 0001
n1: 1000 0001 0100 0001 1000 0001 0100 0001
key: 0111 1111 0001 0101 0100 1100 1011 1010
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сумма (N1 + Key): 0000 0000 0101 0110 1100 1101 1111 1011
Сумма в десятичном виде (N1 + Key): ['0', '0', '5', '6', '12', '13', '15', '11']
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После перестановки в двоичном виде: 0111 0001 0011 0101 0011 1001 1111 0010
После перестановки по таблице: [7, 1, 3, 5, 3, 9, 15, 2]
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сдвиг на 11: 1010 1001 1100 1111 1001 0011 1000 1001
N2: 1000 0001 0100 0001 1000 0001 0100 0001
Сумма (Сдвиг N1 + N2): 0010 1000 1000 1110 0001 0010 1100 1000
Сумма (Сдвиг N1 + N2) в десятичном виде: ['2', '8', '8', '14', '1', '2', '12', '8']
<----- ПАРМЕТРЫ ДЛЯ СЛЕДУЮЩЕГО РАУНДА ----->
N1: 0010 1000 1000 1110 0001 0010 1100 1000
Десятичный формат N1: ['2', '8', '8', '14', '1', '2', '12', '8']
N2: 1000 0001 0100 0001 1000 0001 0100 0001
Десятичный формат N2: ['8', '1', '4', '1', '8', '1', '4', '1']
|_____ 2 РАУНД _____|
n2: 1000 0001 0100 0001 1000 0001 0100 0001
n1: 0010 1000 1000 1110 0001 0010 1100 1000
key: 0011 1110 0101 0000 1001 0111 0101 0100
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сумма (N1 + Key): 0110 0110 1101 1110 1010 1010 0001 1100
Сумма в десятичном виде (N1 + Key): ['6', '6', '13', '14', '10', '10', '1', '12']
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
После перестановки в двоичном виде: 1001 1100 1010 1100 0110 0011 0101 0001
После перестановки по таблице: [9, 12, 10, 12, 6, 3, 5, 1]
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сдвиг на 11: 0110 0011 0001 1010 1000 1100 1110 0101
N2: 1000 0001 0100 0001 1000 0001 0100 0001
Сумма (Сдвиг N1 + N2): 1110 0010 0101 1011 0000 1101 1010 0100
Сумма (Сдвиг N1 + N2) в десятичном виде: ['14', '2', '5', '11', '0', '13', '10', '4']
<----- ПАРМЕТРЫ ДЛЯ СЛЕДУЮЩЕГО РАУНДА ----->
N1: 1110 0010 0101 1011 0000 1101 1010 0100
Десятичный формат N1: ['14', '2', '5', '11', '0', '13', '10', '4']
N2: 0010 1000 1000 1110 0001 0010 1100 1000
Десятичный формат N2: ['2', '8', '8', '14', '1', '2', '12', '8']