Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Реферат: Шифрование в Delphi

Название: Шифрование в Delphi
Раздел: Рефераты по информатике, программированию
Тип: реферат Добавлен 04:10:08 01 марта 2008 Похожие работы
Просмотров: 111 Комментариев: 22 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно     Скачать

Данные надо беречь. Сам посуди, обидно, если открытие ценой в сто миллионов енотов или рецепт безалкогольной водки, над которым ты корпел три вечера в мрачном подвале нелегального компьютерного клуба, — уплывет к злостному ленивому конкуренту, который, пользуясь твоим похмельем, наложил грязную лапу на приватные дискеты с ценнейшей инфой?! Дальше можно не продолжать. Шифруем, шифруем, шифруем!..

Добрый дядюшка 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 года, производить и распространять любые шифрующие средства можно, только имея лицензию ФАПСИ. Соответственно, шифровать нельзя :). Поэтому пиши программы только для личного пользования и только в познавательных целях.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита06:38:26 02 ноября 2021
.
.06:38:24 02 ноября 2021
.
.06:38:24 02 ноября 2021
.
.06:38:23 02 ноября 2021
.
.06:38:23 02 ноября 2021

Смотреть все комментарии (22)
Работы, похожие на Реферат: Шифрование в Delphi

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(294402)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте