Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2009, 23:05   #1
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию Задача на файлы

Начали проходить тему файлы, вот задали написать вот такую задачку:
Цитата:
Составить программу, которая расшифровывает файл sifr.pas, если известен ключ шифра, и записать рассшифрованное в файл new.pas.
Оперторов пока знаем не много, только основные, и я не представляю как её написать. Если кто-то может помочь, составте пожалуйста.
Arturko вне форума Ответить с цитированием
Старый 09.02.2009, 23:48   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Что собой представляет клуч шифра? Как он должен работать?
И на файл sifr.pas было бы неплохо глянуть.
Gorychev вне форума Ответить с цитированием
Старый 10.02.2009, 17:25   #3
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Простой пример шифровки
с ключем pgpKey1

Применять построчно к файлу
Код:
//кодировать
strShifr := StrToStr(strText, pgpKey1);
//раскодировать также
strText := StrToStr(strShifr, pgpKey1);
Код:
unit libPgp;

interface

uses SysUtils;

const
  pgpKey1  = 'd363454623456234cbc23cdf523f453f5a52f5f345fddae4a2323432314cf5f'+
             'd363454623456234cbc23cdf523f453f5a52f5f345fddae4a2323432314cf5f'+
             'd363454623456234cbc23cdf523f453f5a52f5f345fddae4a2323432314cf5f'+
             'd363454623456234cbc23cdf523f453f5a52f5f345fddae4a2323432314cf5f';
  
  function CharToChar(ch: char; sh: byte; Key: string): char;
  function StrToStr(s: string; Key: string): string;


implementation



//  Шифрование символа в строке
function CharToChar(ch: char; sh: byte; Key: string): char;
var b: byte;
begin
  b := Ord(ch);
  Result := Chr(b xor StrToInt('$'+Key[sh]));
end;

//  Шифрование строки
function StrToStr(s: string; Key: string): string;
var i : integer;
    r : string;
begin
    r := '';
  for i := 1 to length(s) do
    r := r + CharToChar(s[i], i, Key);
  Result := r;
end;


begin
end.
knight вне форума Ответить с цитированием
Старый 11.02.2009, 21:53   #4
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Сегодня уточнил что и как. Ключ придумать самому, можно взять какой-то уже известный (например шифр Цезаря), можно придумать вообще самому. Содержания файла sifr.pas нет, тоесть расшифровать нужно текст, а текст придумать любой самому. Ну текст я сам придумаю, мне бы пример, где расшивровывается одно любое предложение с любым ключём и записывается это в новый файл.
Arturko вне форума Ответить с цитированием
Старый 11.02.2009, 21:55   #5
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

knight нифига себе пример, как бы тут разобраться что и чего )) Какой тут шифр, как сдвигаются буквы ? И куда вставить вот это:
Цитата:
//кодировать
strShifr := StrToStr(strText, pgpKey1);
//раскодировать также
strText := StrToStr(strShifr, pgpKey1);
Arturko вне форума Ответить с цитированием
Старый 11.02.2009, 22:43   #6
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Глянь здесь.. Там много всяких шифров. Шифр Цезаря тоже есть
knight вне форума Ответить с цитированием
Старый 11.02.2009, 22:51   #7
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Цитата:
Сообщение от Arturko Посмотреть сообщение
knight нифига себе пример, как бы тут разобраться что и чего )) Какой тут шифр, как сдвигаются буквы ? И куда вставить вот это:
Обычное XOR шифрование. Никакого сдвига здесь не происходит. Происходит наложение очередного кода символа ключа на очередной код символа строки. Прикол XOR в том, что если дважды наложить один и тот же код, то получится опять расшифрованный результат.

CharToChar(
ch: char; - символ для кодирования
sh: byte; - номер символа в строке
Key: string) - ключевая строка (можно указать pgpKey1)
: char; - на выходе шифрованноый код


// Шифрование строки
function StrToStr(
s: string; - строка для шифрования
Key: string) - ключевая строка (можно указать pgpKey1)
: string; - зашифрованная строка
knight вне форума Ответить с цитированием
Старый 11.02.2009, 22:54   #8
Arturko
Пользователь
 
Регистрация: 09.02.2009
Сообщений: 35
По умолчанию

Вот, например Цезарь:
Цитата:
program job1_caesar;
uses crt;
var a,b,c:string;
i,j,k,d:integer;
begin
clrscr;
writeln(‘Enter text for coding');
readln(a);
writeln('Enter key');
readln(d);
c:='';
b:=' abcdefghijklmnopqrstuvwxyz';
for i:=1 to length(a) do
for j:=1 to length(b) do
begin
k:=(j+d) mod 25;
if a[i]=b[j] then c:=c+b[k];
end;
writeln(c);
readkey;
end.
Зашифровка текста, текст я ввожу сам, потом просит ключ ввести, что вводить не понимаю. Только надо как-то изменить, что бы сразу был зашифрованный текст (в каком - то документе) и что бы сразу он его прочитал, расшифровывл используя ключ, и записал в новый файл. Как это можно сделать ?
Arturko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Файлы. задача. pif Помощь студентам 1 07.02.2009 23:00
Задача на текстовые файлы Paul11j Помощь студентам 20 17.03.2008 13:20
Задача на файлы Плюшечка Паскаль, Turbo Pascal, PascalABC.NET 3 28.11.2007 18:37