ВУЗ:
Составители:
k:=1;
//
if shift = sright then begin
for i:=sblock*8-n+1 to sblock*8 do begin
cshiftblock[k]:= cbitblock[i];
k:=k+1;
end;
for i:=1 to sblock*8-n do begin
cshiftblock[k]:= cbitblock[i];
k:=k+1;
end;
end else
//
begin
for i:=n+1 to sblock*8 do begin
cshiftblock[k]:= cbitblock[i];
k:=k+1;
end;
for i:=1 to n do begin
cshiftblock[k]:= cbitblock[i];
k:=k+1;
end;
end;
shiftblock := cshiftblock;
end;
К недостаткам вышеперечисленных методов блочного шифрования
можно отнести их слабую криптостойкость, так как одинаковые блоки
исходного текста выглядят одинаково в зашифрованном виде. Это позволяет,
проведя несколько экспериментов, выяснить принцип формирования
шифротекста и расшифровать его. Кроме того, такие шифры легко поддаются
анализу на относительные частоты.
Следующий метод – метод замены по таблице, использует специальную
функцию «потопления статистики», которая значительно затрудняет взлом. В
табличном методе при шифровании одному символу может быть поставлено в
соответствие одно из нескольких значений, которое выбирается абсолютно
случайно и не зависит от ключа. Это означает, что даже используя один и тот
же ключ для шифрования одинакового текста, каждый раз мы будем получать
разные шифры.
Для этого необходимо сформировать таблицу значений для подстановки.
Размерность этой таблицы зависит от двух параметров алгоритма: длины
шифруемого блока (n) и некоторой постоянной величины, которая определяет
число возможных значений подстановки для шифрования одного и того же
символа. Обозначим эти параметры как rows – число строк в таблице и
columns – число столбцов. Число строк определяется как
n
rows 2= , где n – это
длина шифруемого блока в битах.
Полученная таблица размерностью columnsrows × заполняется
псевдослучайными значениями от 0 до columnsrows × . При этом обязательным
требованием должно быть требование уникальности этих значений, то есть они
не должны повторяться.
Страницы
- « первая
- ‹ предыдущая
- …
- 57
- 58
- 59
- 60
- 61
- …
- следующая ›
- последняя »