Шифрування бази відповідей
Гра повністю написана, але, щоб правильно відповісти на питання, не обов'язково все знати. Що може перешкодити користувачеві відкрити файл lucky.ini і прочитати там правильну відповідь. Звідси висновок: базу даних відповідей необхідно зашифрувати! Ми не будемо використовувати складних шифраторів, а застосуємо просту операцію хоr. Отже, додамо на початку обробника події OnCreate форми Forml наступний код:
procedure TForml.FormCreate (Sender: TObject);
label ran;
begin
// Зіставимо змінну fl і повний шлях до файлу lucky.ini
AssignFile (fI, ss);
// Змінна f2 буде відповідати за файл C: \ xor.ini
AssignFile (f2, 'C: \ xor.ini');
Reset (fl); // відкриваємо файл на читання
Rewrite (f2); // відкриваємо файл на запис
while not eof (fl) do // поки не досягнуть кінець файла
begin
Read (fl, cop); // читаємо lucky.ini
cop: = chr (ord (сор) хог 123); // Дешифруючи дані
Write (f2, cop); // записуємо їх в xor.ini
end;
CloseFile (fl); CloseFile (f2); // Закриваємо файли
Randomize; // активізуємо генератор випадкових чисел
Тепер необхідно внести деякі зміни до розділу оголошення змінних.
var
fl, f2: file of char;
cop: char;
У процедурі обробки події OnCreate, перевизначте змінну ss:
ss: = 'c: \ xor.ini'; // розміщення бази даних
..І нарешті, зашіфруйте файл lucky.ini. Для цього на швидку руку створіть програму, скопіюйте з нашої гри фрагмент коду, який дешифрує базу питань. Так як хоr - абсолютно оборотна функція (тому й ненадійна) цим же способом можна зашифрувати і базу. Приклад зашифрованою бази питань зображений на рис. 2.11.
В
ідкомпілюйте
і запустіть програму.Файл Close All.
Оформіть звіт по лабораторній роботі: тема і мета роботи; послідовність виконання роботи.
