это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Данные надо беречь. Сам посуди, обидно, если открытие ценой в сто миллионов енотов или рецепт безалкогольной водки, над которым ты корпел три вечера в мрачном подвале нелегального компьютерного клуба, — уплывет к злостному ленивому конкуренту, который, пользуясь твоим похмельем, наложил грязную лапу на приватные дискеты с ценнейшей инфой?! Дальше можно не продолжать. Шифруем, шифруем, шифруем!..
Добрый дядюшка Borland предоставил нам несколько занятных функций для работы со строками, о которых не все знают. Сосредоточены они в модуле StrUtils.pas. Такие функции, как RightStr, LeftStr совмещают стандартные команды Copy и Delete: так, LeftStr возвращает значение левой части строки до указанной вами позиции (что вытворяет RightStr, догадайся сам), а функция ReverseString и вовсе делает зеркальное отображение данной строки: 321 вместо 123. Используем ее в особенности, чтобы осложнить жизнь хитрому дешифровщику.
Алгоритм шифрования будет прост, как Win 3.1. С каждым символом кодируемого документа проделаем следующее:
1. Преобразуем символ в число командой Ord.
2. Преобразуем каждый символ пользовательского пароля в число и сумму этих чисел прибавим к полученному в пункте 1.
3. От результата отнимаем число, равное позиции данного символа. То есть буковки будут шифроваться по-разному в зависимости от их позиции в строке :).
4. То, что получилось, запишем обратно из чисел в символы командой Chr. Как видишь, после всех наших манипуляций этот символ уже будет другим.
5. Запишем всю строку навыворот командой ReverseString.
Дешифровка, как ты догадываешься, будет производиться в обратном порядке.
Теперь, когда алгоритм намертво засел в голове, реализуем соответствующую программу. Внимание! Не исключено, что это будет первая твоя программа с настоящим синтаксисом команд:
<команда> <путь> <пароль>
— так будет выглядеть он в консоли нашего приложения (да, оно будет консольным!). Команд всего две: crypt и decrypt — соответственно зашифровать и дешифровать файл, путь к которому указывается после пробела, а затем — твой пароль. НЕ ЗАБУДЬ ЕГО! Предупреждаю совершенно серьезно. Запомнил? В бой!
Crypt C:file.txt linuxmustsurvive
— закодируем File.txt. Результат (зашифрованный текст) сохраниться в той же директории, что и исполняемый файл нашего приложения под именем Translated_File.txt.
Decrypt C:Translated_file.txt linuxmustsurvive
— дешифровка.
Реализовывается это вот как:
program Crypter;
{$APPTYPE CONSOLE}
uses
SysUtils,
StrUtils; //!!
var
F, //входящий файл
F1: TextFile; //результат (файл с переводом)
ToDo, FileName, PassW, Line, TranslatedFile: string;
position, IsCrypt: integer;
//находим сумму числовых значений символов пароля
function Password(Psw: string): integer;
var
i,res: integer;
begin
res:=0;
for i:=1 to Length(psw) do res:=res+ord(psw[i]);
result:=res;
end;
function Crypt(CryptStr: string): string;
var
s: string;
i: integer;
begin
if CryptStr<>EmptyStr then
for i:=1 to Length(CryptStr) do begin
s:=LeftStr(CryptStr,1);
CryptStr:=RightStr(CryptStr,Length CryptStr)-1);
//ШИФРОВКА:
s:=chr(ord(s[1])+Password(PassW)-i);
result:=result+s;
end;
result:=ReverseString(result);
end;
function Decrypt(DecryptStr: String): String;
var
i: integer;
s: String;
begin
DecryptStr:=ReverseString(DecryptStr);
if DecryptStr<>EmptyStr then
for i:=1 to Length(DeCryptStr) do begin
s:=LeftStr(DeCryptStr,1);
DeCryptStr:=RightStr(DeCryptStr,Length DeCryptStr)-1);
//ДЕШИФРОВКА:
result:=result+chr(ord(s[1])-password(PassW)+i);
end;
end;
begin
while true do begin
isCrypt:=0;
writeln(#10+'Crypter >'+#10);
//Какую команду ввел юзер?
readln(ToDo);
if UpperCase(ToDo)='EXIT' then Exit;
if AnsiContainsText(ToDo,'decrypt') then isCrypt:=1
else if AnsiContainsText(ToDo,'crypt') then isCrypt:=2;
//прочитав команду, удаляем ее из строки и читаем дальше
position:=pos(' ',ToDo);
if position>0 then ToDo:=RightStr(ToDo,Length(ToDo)-position);
//Читаем путь к файлу
position:=pos(' ',ToDo);
if position>0 then FileName:=LeftStr(ToDo,position-1);
//Читаем пароль
PassW:=RightStr(ToDo,Length(ToDo)-position);
//Всё правильно? Начинаем!
if (isCrypt<=0) or (PassW=EmptyStr) or (not FileExists(FileName)) then writeln('Wrong command')
else begin
TranslatedFile:=ExtractFilePath(paramStr(0)) + 'translated_' + ExtractFileName(FileName);
//соединяемся с файлами
AssignFile(F, FileName);
AssignFile(F1, TranslatedFile);
//переходим в начало файла
Rewrite(F1);
Reset(F);
//читаем строки, пока не дойдем до конца файла
while not EOF(F) do begin
//читаем из переводимого файла
ReadLn(F, Line);
if isCrypt=1 then Line:=Decrypt(Line);
if isCrypt=2 then Line:=Crypt(Line);
//записываем в файл с переводом
Writeln(F1, Line);
end;
//отсоединямся от файлов
CloseFile(F);
CloseFile(F1);
end;
end;
end.
Вот, собственно, и всё. Еще раз напоминаю, что результат (файл с переводом) сохранится В ТОЙ ЖЕ ДИРЕКТОРИИ, что и наше приложение, а не в той, где лежит исходный файл. В заключение процитирую отрывок из статьи «Криптография в C++» в номере 3.03 журнала «Хакер»:
(с) Николай «GorluM» Андреев
Но я хочу тебя предупредить: в нашей стране, согласно указу № 334 от 1995 года, производить и распространять любые шифрующие средства можно, только имея лицензию ФАПСИ. Соответственно, шифровать нельзя :). Поэтому пиши программы только для личного пользования и только в познавательных целях.
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Написать отчет по учебной практике. Есть только методичка и название...
Отчет по практике, Реклама и PR
Срок сдачи к 8 авг.
нужны две статьи на разные уникальные актуальные темы по архитектуре...
Статья, Архитектура
Срок сдачи к 3 авг.
Написать курсовую работу
Курсовая, Управление в технических системах, теория автоматического управления
Срок сдачи к 7 авг.
Составить предложения 4 штуки чтобы в них были слова: дождь,море, рука
Услуги корректора, Русский язык
Срок сдачи к 3 авг.
Без ии! исследование дневников с сайта "прожито"
Другое, История повседневности
Срок сдачи к 23 авг.
Разработка эффективной методики воспитания скоростно-силовых способностей у мальчиков 12–14 лет с использованием круговой тренировки с отягощениями на уроках физической культуры
ВКР, Физическая культура и спорт
Срок сдачи к 7 авг.
Отчет по практике, во бакалавриат, строительство - учебная
Отчет по практике, Строительство
Срок сдачи к 4 авг.
Профиль вычислительные машины, комплексы, системы и сети.
Диплом, Прикладная информатика
Срок сдачи к 7 авг.
Нужно выполнить отчет по производственной практике по курсовой работе
Отчет по практике, Маркетинг
Срок сдачи к 18 сент.
Написать третью главу магистерской диссертации на тему "Прокурор и его полномочия в уголовном судопроизводстве. Проблемные аспекты"
ВКР, Уголовное право
Срок сдачи к 1 сент.
Написать первую главу магистерской диссертации и научную статью по третьей главе.
Магистерская диссертация, Управление инвестиционно-строительной деятельностью
Срок сдачи к 20 сент.
выполнить конрольную работу
Контрольная, Дисциплина "Методы принятия управленческих решений"
Срок сдачи к 25 авг.
Организационно-правовое обеспечение защиты персональных данных в государственном (муниципальном) органе
Диплом, Государственное и муниципальное управление (Синергия)
Срок сдачи к 16 авг.
Технологии привлечения на государственную гражданскую (муниципальную) службу квалифицированных специалистов
Диплом, Государственное муниципальное управление (Синергия)
Срок сдачи к 23 авг.
Заполните форму и узнайте цену на индивидуальную работу!