Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 259
от 21.03.2004, 22:40

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 439
Отправлено ответов: 1614
Активность: 367.6 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Boriss
Статус: Профессиональный
Общий рейтинг: 154.89
URL: Программирование на Паскале
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.64
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 150.28
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
 
Strory
Статус: Доверительный
Общий рейтинг: 160.34
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 161.01
[Подробней >>]
samum2000
Статус: Профессиональный
Общий рейтинг: 132.37
[Подробней >>]
 
sir henry
Статус: Профессиональный
Общий рейтинг: 158.4
[Подробней >>]
VOVAN
Статус: Доверительный
Общий рейтинг: 104.16
[Подробней >>]
D.M.
Статус: Опытный
Общий рейтинг: 127.87
URL: Автостартовщик
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 434. Как прилинковать драйвер egavga.bgi к .exe и инициализировать с его помощью графический режим? Т.е. ... (ответов: 6)
Вопрос № 435. Уважаемые эксперты посоветуйте 2-3 несложных алгоритма шифрования/дешифрования. Применятся они будут... (ответов: 8)
Вопрос № 436. На счет вопроса № 435 о алгоритмах шифрования. Если можно , уважаемые эксперты, приводите примеры ра... (ответов: 3)

Вопросов: 3, ответов: 17


 Вопрос № 434

Как прилинковать драйвер egavga.bgi к .exe и инициализировать с его помощью графический режим?
Т.е. я хочу получить независимый внешних файлов .exe.



Вопрос отправлен: 18.03.2004, 09:21
Отправитель: Guru

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Приветствую Вас, Guru!
Проблема решается с помощью RegisterBGIDriver. В стандартной справке есть пример. Именно эта функция выполняет "пристегивание"

Ответ отправлен: 18.03.2004, 11:11
Отправитель: Boriss


Отвечает Ayl

Приветствую Вас, Guru!
1. Используешь утилиту binobj для преобразования файла egavga.bgi в egavga.obj
2. В своей проге пишешь следующие строки:

Procedure egavga; external;
{ $L egavga.obj }

3. Вызываешь функцию RegisterBGIDriver:
RegisterBGIDriver (@egavga);

4. Теперь можешь вызывать процедуру InitGraph

Ответ отправлен: 18.03.2004, 11:25
Отправитель: Ayl


Отвечает Tancho

п”пѕп±яЂпѕпµ пІяЂпµпјяЏ яЃяѓя‚пѕпє, Guru!
1)пќп°пґпѕ пєпѕпЅпІпµяЂя‚пёяЂпѕпІп°я‚яЊ пґяЂп°п№пІпµяЂ egavga.bgi пІ egavga.obj, пµяЃя‚яЊ
я‚п°пєп°яЏ пїяЂпѕпЁп° BINOBJ inputfile outputfile publicname пІ
Borland(Tupbo) Pascal пїп°пєпµя‚пµ, (пїпѕя‡пёя‚п°п№ пІ пґпѕпєяѓпјпµпЅя‚п°я†пёпё);
2) пљ пїяЂпѕпЁяѓ пЅп°пґпѕ пґпѕп±п°пІпёя‚яЊ пєпѕпґ пґп»яЏ "яЂпµпЁпёяЃя‚яЂпёяЂпѕпІп°пЅпёяЏ" пґяЂп°п№пІп°, я‚п°пє я‡я‚пѕ я„яѓпЅпєя†пёпё пёп· пЁяЂп°я„пёя‡пЅп°яЏ п±пёп±п»пёпѕя‚пµпєп° пїпѕп»яЊп·пѕпІп°я‚яЊ яЃпІяЏп·п·пЅя‹пµ
пє пїяЂпѕпЁяѓ пґяЂп°п№пІпµяЂя‹п№, п° пЅпµ пёяЃя‡яѓя‚яЊ пёя… пёп· ...pgi. п­я‚пѕ пјпѕп¶пЅпѕ яЂпµп°п»пёп·пѕпІп°я‚яЊ пґпІп° пїяѓя‚пё
п°) яЃпѕпІпµяЂя€пёя‚яЊ пґпёяЂпµпєя‚пЅпѕпµ пѕп±яЂп°я‰пµпЅпёпµ пє пґяЂп°п№пІяѓ пєп°пє пє пІпЅпµя€пЅяѓяЋ пїяЂп°я†пµпґяѓяЂяѓ;
п±) яЌя‚пѕ ( яЌя‚пё ) пѕп±яЂп°я‰пµпЅпёпµ(яЏ) пІяЃя‚п°пІпёя‚яЊ пІ пѕя‚пґпµп»пЅпёп№ пјпѕпґяѓп»яЊ;
п’ я‚пІпѕп№ яЃп»яѓя‡п°п№ пЁпѕпґпёя‚яЊяЃяЏ яЃпїпѕяЃпѕп± п°)
п’ пїяЂпёп»пѕп¶пµпЅпёпµ пґп°пЅп° яЃя…пµпјп° пґпµп№яЃя‚пІпёяЏ!

Приложение:

Ответ отправлен: 18.03.2004, 15:36
Отправитель: Tancho


Отвечает Strory

Приветствую Вас, Guru!
Сначала сконвертируй файл egavga.bgi в egavga.obj с помощью binobj.exe (находится в каталоге bin). Затем в своей проге вставь строчку {$L EGAVGA.OBJ}. Вот и всё, если не ошибаюсь. Компилятор скомпонует программу вместе с графическим драйвером.

Ответ отправлен: 18.03.2004, 15:59
Отправитель: Strory


Отвечает Pawel

Здравствуйте, Guru!
Директива { $L FILE_NAME}

Ответ отправлен: 18.03.2004, 16:19
Отправитель: Pawel


Отвечает samum2000

Приветствую вас,Guru!
Сначала надо преобразовать драйвер в файл *.OBJ. Для этого надо вызвать программу BINOBJ из папки BIN с тремя параметрами - именем bgi файла, именем obj файла и именем глобальной процедуры. Например:
binobj egavga.bgi egavga vgadrv
После этого вы получите файл egavga.obj. Теперь сама программа:
Program Internaldrv;
Uses Graph;
Procedure vgadrv; external;
{$L egavga.obj}
var
d, m, e: integer;
begin
if registerBGIDriver(@vgadrv)<0 then
begin
Writeln('Не удалось зарегистрировать драйвер!');
halt;
end;
d:=VGA;
m:=VGAHi;
InitGraph(d, r, '');

--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 20.03.2004, 07:54
Отправитель: samum2000


 Вопрос № 435

Уважаемые эксперты посоветуйте 2-3 несложных алгоритма шифрования/дешифрования. Применятся они будут для шифрования пользовательского ввода с последующими сохранением в файл.



Вопрос отправлен: 18.03.2004, 14:39
Отправитель: pav (pav@bk.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Добрый день, pav!
Можно использовать функцию с XOR. Она хоть и проста, но понятна в использовании:
for i := 1 to length(text) do
begin
// XOR алгоритм
toto := chr((ord(text[i]) xor (ord(key)));
result := result + toto;
end;
key - ключ шифрования
text - исходная строка
toto - зашифрованый символ
result - зашифрованая строка
----------
Расшифровывается точно так-же :)).

Ответ отправлен: 19.03.2004, 14:49
Отправитель: sir henry


Отвечает Ayl

Добрый день, pav!

DEC! Шутка! :-)

Ну, например, шифрование с помощью xor. Выбираешь число от 0 до 255 и шифруешь строку:
Byte (s [i]) = Byte (s [i]) xor code

Либо запрашиваешь пароль и шифруешь строку этим паролем по тому же алгоритму, только в качестве code берешь очередной символ из строки пароля.

Преимущество - очень просто, один алгоритм для шифрования/расшифрования.

Можешь попробовать алгоритм подстановки:
Byte (s [i]) = (Byte (s [i]) + code) mod 256

Для расшифровки подойдет такой код:
Byte (s [i]) = (Byte (s [i]) - code + 256) mod 256

Также можешь использовать любой алгоритм сжатия информации без потерь - эти алгоритмы обратимы и сжатый текст не является читабельным.

Вроде вот так...

Ответ отправлен: 18.03.2004, 15:01
Отправитель: Ayl


Отвечает VOVAN

Добрый день, pav!
инверсия алфавита а=я ...
подстановка цезаря: а=б б=в в=г ...

Ответ отправлен: 18.03.2004, 15:11
Отправитель: VOVAN


Отвечает Strory

Приветствую Вас, pav!
Самый простой - оператором xor. Вот так (пишу не проверяя, так что не очень ругайте за возможные опечатки и недодумки).
{--}
Procedure Crypt(Password: Byte);
var
ch: Char;
begin
Assign(input, 'input.txt');
ReSet(input);
Assign(output, 'output.txt');
ReWrite(output);
while not EOF do begin
while not EOLN do begin
Read(ch);
ch := chr(ord(ch) xor Password);
Write(ch);
end;
ReadLn;
WriteLn;
end;
Close(output);
Close(input);
end;
{--}
Повторное выполнение данной процедуры с _тем_же_ паролем расшифрует файл. Для "домашнего" пользования такого алгоритма вполне достаточно. Можете усложнить используя для пароля тип Word, но тогда шифруйте по два символа.
Бестов и регардов!

Ответ отправлен: 18.03.2004, 15:59
Отправитель: Strory


Отвечает Pawel

Приветствую Вас, pav!
var s:string[10];
s1:string[10]; - key
s1:='1234567890';
for i:=1 to 10
s[i]:=Chr(org(s[i] xor org(s1[i]));

Ответ отправлен: 18.03.2004, 16:11
Отправитель: Pawel


Отвечает Boriss

Доброе время суток, pav!
Два - три несложных не бывает. Несложный только один - XOR. О нем в приложении пример.
Посложнее - можно спрятать в рисунке, например.
Другие способы посмотрите:
http://www.proglib.ru/articles/art0000056.asp
http://rsdn.ru/article/crypto/pgpsdk1.xml
Мало покажется, еще пришлю ссылок :))

Приложение:

Ответ отправлен: 18.03.2004, 16:37
Отправитель: Boriss


Отвечает D.M.

Приветствую Вас, pav!


Ответ отправлен: 18.03.2004, 17:45
Отправитель: D.M.


Отвечает samum2000

Приветствую вас,pav!
Самый простой алгоритм - это алгоритм xor.
var
key, text, longkey, result: string;
i: integer;
toto, c: char;
begin
for i := 0 to (length(text) div length(key)) do
longkey := longkey + key;
for i := 1 to length(text) do
begin
toto := chr((ord(text[i]) xor ord(longkey[i]))); // XOR алгоритм
result := result + toto;
end;
end;
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 20.03.2004, 07:54
Отправитель: samum2000


 Вопрос № 436

На счет вопроса № 435 о алгоритмах шифрования. Если можно , уважаемые эксперты, приводите примеры рабочих программ/процедур/функций.



Вопрос отправлен: 18.03.2004, 17:58
Отправитель: pav (pav@bk.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Добрый день, pav!
Привел Вам вполне рабочий код. Единственно что не хватает, это доделка под Вашу конкретную задачу, т.е. дополнительно создание файла, открытие, закрытие и т.п.

Ответ отправлен: 19.03.2004, 14:51
Отправитель: sir henry


Отвечает VOVAN

Приветствую Вас, pav!
подстановка цезаря. выходит при нажатии ескейпа.
а=б б=в ...
если подставить вместо inc(c), inc(c,2). получится а=в б=г... Меняя цифру получаешь разное содержание

Приложение:

Ответ отправлен: 18.03.2004, 18:23
Отправитель: VOVAN


Отвечает Strory

Добрый день, pav!
Если предыдущая процедура не работает, то я очень извиняюсь. А в приложение воткнута работающая программа для шифрования.
Описание (поскипанное):
--------------------------------
Автор - Потапкин Роман Сергеевич
1. Запрашиваем пароль любой длины.
2. Из символов пароля создаем пять последовательностей по следующим формулам (хотя возможно другое количество и качество) :
a1 = a1 + n;
a2 = a2 - n;
a3 = a3 xor n;
a4 = a4 + a1 + n;
a5 = a5 + a2 + n,
3. Опять же из символов пароля создаем одну или несколько последовательностей, с помощью которой кодируем файл методом XOR.
Для раскодирования идем следующими шагами :
1. Запрашиваем пароль для проверки.
2. Кодируем введенный пароль по тем же пяти формулам.
3. Лезем в закодированный файл и сравниваем введенный пароль с тем, который лежит в заголовке файла. Если не совпадает, либо выходим, либо идем на п.1.
4. Из введенного пароля создаем вторую последовательность, с помощью которой и приводим файл в первоначальное состояние.

Приложение:

Ответ отправлен: 18.03.2004, 19:26
Отправитель: Strory



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (17)
Perl (4)
Builder / Delphi (19)
Pascal (22)
Basic / VBA (8)
Java / JavaScript (7)
PHP (14)
Криптография (7)
WinAPI (15)
Радиоэлектроника (8)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (57)
"Железо" (35)
Поиск информации (21)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (13)
Юристу
Гражданское право (13)
Семейное право (12)
Трудовое право (12)
КоАП (9)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное