Main step of GOST 28147-89: Difference between revisions

m
Line 198:
 
=={{header|JavaScript}}==
<lang JavaScript>var Таблица_замен = [
<lang JavaScript>function ОсновнойШаг(блок_текста, элемент_ключа) {
[ 4, 10, 9, 2, 13, 8, 0, 14, 6, 11, 1, 12, 7, 15, 5, 3],
[14, 11, 4, 12, 6, 13, 15, 10, 2, 3, 8, 1, 0, 7, 5, 9],
[ 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11],
[ 7, 13, 10, 1, 0, 8, 9, 15, 14, 4, 6, 12, 11, 2, 5, 3],
[ 6, 12, 7, 1, 5, 15, 13, 8, 4, 10, 9, 14, 0, 3, 11, 2],
[ 4, 11, 10, 0, 7, 2, 1, 13, 3, 6, 8, 5, 9, 12, 15, 14],
[13, 11, 4, 1, 3, 15, 5, 9, 0, 10, 14, 7, 6, 8, 2, 12],
[ 1, 15, 13, 0, 5, 7, 10, 4, 9, 2, 3, 14, 6, 11, 8, 12]];
 
<lang JavaScript>function ОсновнойШаг(блок_текста, элемент_ключа) {
var N = блок_текста.slice(0);
var X = элемент_ключа;
Line 205 ⟶ 215:
for (var сч = 0; сч < 4; сч++) {
ячейка = (S >>> (сч << 3)) & 0xFF;
нов_S += (ТаблицаЗаменТаблица_замен[сч*2][ячейка & 0x0F] + (ТаблицаЗаменТаблица_замен[сч*2+1][ячейка >>> 4] << 4)) << (сч << 3);
}
S = (((нов_S << 11) + (нов_S >>> 21)) & 0xFFFFFFFF) ^ N[1];