Алгоритм шифрования данных
Задача
Допустим, требуется зашифровать сообщения, состоящие из определенных символов. Например, исходный текст состоит из цифры от 0 до 9 (представленных в программе в виде символов) и других знаков и имеет длину в 15 символов. В шифровке на место цифр подставляются соответствующие им знаки, на место всех остальных символов дополнительный 11-й знак.
Решение
Описание переменных:
В программе имеется 4 массива. Два – в разделе констант, и два – в разделе описания переменных. Первые служат для хранения соответствия цифр символам кодирования, вторые – для хранения данных, введенных пользователем, и результата их шифрования.
Алгоритм решения задачи:
Сначала данные записываются в массив mytext. Затем требуется просмотреть каждый элемент массива и найти ему соответствие в массиве atext. Когда обнаруживается соответствие, цикл while останавливается и в mycode записывается соответствующий символ-код из массива acode. Если символ не описан в массиве atext, то он заменяется последним элементом массива acode.
Программа на языке Паскаль:
const n = 15; atext: array[1..10] of char = ('0','1','2','3','4','5','6','7','8','9'); acode: array[1..11] of char = ('&','+','/','.','^','@','"','!','%','#','$'); var mytext: array[1..n] of char; mycode: array[1..n] of char; i, j: integer; begin writeln('Введите данные: '); for i := 1 to n do read(mytext[i]); for i := 1 to n do begin j := 1; while (j <= 10) and (mytext[i] <> atext[j]) do j := j + 1; if j <= 10 then mycode[i] := acode[j] else mycode[i] := acode[11]; end; write('Результат: '); for i := 1 to n do write(mycode[i]); readln; end.
Комментарии
А как раскодировать?
А как раскодировать? Можно дополнить код.