Призвали как-то одного волосатого админа в армию служить, на границу. Поставили его в дозор. Вдруг админ слышит шаги...
- Стой! Пароль!.. ответ из темноты:
- Владивосток...
- Логин...
- ?!..
program Crypt;
{$APPTYPE CONSOLE}uses Windows;
var
key, text, longkey, result : string;
i : integer;
toto, c : char;
F : TextFile;
begin
writeln('Enter the key:');
readln(key);
writeln('Enter the text:');
readln(text);
for i := 0 to (length(text) div length(key)) do
longkey := longkey + key;
for i := 1 to length(text) dobegin// XOR алгоритм
toto := chr((ord(text[i]) xor ord(longkey[i])));
result := result + toto;
end;
writeln('The crypted text is:');
writeln(result);
write('Should i save it to result.txt ?');
read(c);
if c in ['Y','y'] thenbegin
AssignFile(F,'result.txt');
Rewrite(F);
Writeln(F,result);
CloseFile(F);
end;
end.
Алгоритм, используемый в этом программе, - это метод шифрования XOR (исключительное или), который является простым и быстрым способом зашифровать данные.
Вот как он работает:
Пользователю предлагается ввести ключ, который будет использоваться для шифрования текста.
Ключ повторяется столько раз, сколько необходимо, чтобы соответствовать длине текста.
Для каждого символа в тексте программа выполняет операцию XOR между ASCII-значением символа и ASCII-значением соответствующего символа в ключе.
Результат операции XOR конвертируется обратно в символ с помощью функции CHR.
Полученные символы конкатенируются в новый строку, которая является зашифрованным текстом.
Программа также позволяет пользователю сохранить зашифрованный текст в файле "result.txt".
Вот пример, как работает этот алгоритм:
Пусть ключ будет "ABC" и текст будет "HELLO". Программа повторит ключ столько раз, сколько необходимо, чтобы соответствовать длине текста, поэтому длинный ключ будет "ABCABC".
Процесс шифрования будет выглядеть следующим образом:
H (ASCII-значение 72) XOR A (ASCII-значение 65) = 7
E (ASCII-значение 69) XOR B (ASCII-значение 66) = 3
L (ASCII-значение 76) XOR C (ASCII-значение 67) = 9
L (ASCII-значение 76) XOR A (ASCII-значение 65) = 11
O (ASCII-значение 79) XOR B (ASCII-значение 66) = 13
Результатом шифрования является серия ASCII-значений, разделенных пробелами. Это можно конвертировать обратно в читаемую строку с помощью функции CHR.
В отношении безопасности алгоритм не очень эффективен, потому что это простая операция XOR и атакующий легко может расшифровать данные, найдя ключ или выполнив операцию XOR с зашифрованным текстом для получения оригинального текста.
Алгоритм шифрования XOR - это простой и эффективный способ зашифровать текст с помощью специального ключа, выполняющий операцию исключающего или (XOR) между байтами исходного текста и ключом.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS