Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Защита файла при помощи записи.   Найти похожие ветки 

 
йцйцуун   (2004-11-19 11:37) [0]

Подскажите, как записать текстовой файл так, чтобы он был нечитаемым из других программ, то есть пользователь открыв его в другой программе увидел бы какую-нибудь абракадабру которую было бы совершенно невозможно прочитать. Запись при помощи TFileStream- делает текст нечитаемыми только когда записывается большой объем текста, а способов сохраниния текста кроме обычного SaveToFile и TFileStream TWriter я не знаю.
Помогите пожалуйста.


 
Smithson   (2004-11-19 11:40) [1]

Зашифровать его перед записью


 
йцйцуун   (2004-11-19 11:41) [2]

Smithson

как?


 
Amoeba ©   (2004-11-19 11:48) [3]

Скачай бибилиотеку QStrings. Там помимо массы полезных ф-й для работы со строками есть и ф-ии шифрования.
http://swiss.torry.net/vcl/vcltools/text/adqstrings.zip


 
Алхимик ©   (2004-11-19 11:48) [4]


> [2] йцйцуун   (19.11.04 11:41)
> Smithson
>
> как?

С помощью шифрования.


 
йцйцуун   (2004-11-19 11:56) [5]

Алхимик ©   (19.11.04 11:48) [4]

логично.


 
***SPIDER*** ©   (2004-11-19 14:03) [6]

Шифруй каждую строку простым способом:

function Shivrovka(str:string):string;
var i:integer;
   s:string;
   c:char;
begin
 s:="";
 if Length(str)>0 then
 for i:=1 to Length(str) do
 begin
   c:=str[i];
   s:=s+Chr(256-Ord(c));
 end;
 result:=s;
end;
...


Эта функция служит так же для дешифровки.


 
Fay ©   (2004-11-19 14:05) [7]

2 ***SPIDER*** ©   (19.11.04 14:03) [6]
Это на конкурс "Самый медленный код"? Приз зрительских симпатий Вам обеспечен 8)


 
dimaxx ©   (2004-11-19 22:54) [8]

Лучче сделай так, чтобы никто не смог его открыть (кроме тебя) - лучший способ сокрытия данных.


 
йцйцуун   (2004-11-20 00:05) [9]

dimaxx ©   (19.11.04 22:54) [8]

И как это?


 
Юрий Зотов ©   (2004-11-20 00:23) [10]

> йцйцуун   (20.11.04 00:05) [9]

>> Лучче сделай так, чтобы никто не смог его открыть (кроме
>> тебя) - лучший способ сокрытия данных.

> И как это?

Например, можно написать CloseFile два раза подряд. Тогда никто не догадается, что он был закрыт дважды, и что OpenFile надо поэтому тоже писать дважды.


 
dimaxx ©   (2004-11-20 13:05) [11]

Зачем? Просто его надо открыть так:

var H: Thandle;

H:=FileOpen(Filename,fmOpenReadWrite or fmShareExclusive);

Параметр fmShareExclusive показывает, что к файлу не имеет доступ никто, кроме приложения, открывшего/создавшего файл.

Если нужно создать файл, а не открыть имеющийся, то добавить fmCreate.


 
человек   (2004-11-20 14:08) [12]

Fay ©
"2 ***SPIDER*** ©   (19.11.04 14:03) [6]
Это на конкурс "Самый медленный код"? Приз зрительских симпатий Вам обеспечен 8)"
Нормальное кодирование по Цезарю. Разве что у него в качестве ключа используется символ с кодом 256, а это можно параметризовать:

procedure Shivrovka2(var str:string; c:integer);
begin
for i:=1 to Length(str) do
  str[i+1]:=Chr(Ord(str[i+1])+c);
end;


Ключ c - подается в виде параметра.
Если файлы не гигантские - быстро всё зашифруется. Расшифровать такой код несложно (достаточно перебрать ключи), но целям получения "абракадабры" послужит отлично. Насколько я понял, речь идет не о сертификации ПО на безопасность, а просто о защите от "дурака". Зачем юзверям знать логику работы вашей программы (если она что-то хранит в Temp файлах)?


 
человек   (2004-11-20 14:10) [13]

упс.. str[i], а не str[i+1].
по-моему, это самый быстрый способ шифровки (из тех, что посимвольно шифруют).


 
Юрий К   (2004-11-20 14:30) [14]

"procedure Shivrovka2(var str:string; c:integer);
begin
for i:=1 to Length(str) do
 str[i+1]:=Chr(Ord(str[i+1])+c);
end;"

Только это делать сразу для четырёх (восьми) байтов вместо одного:

pdw: PDWORD;

pdw := PDWORD(@s[1]);

for i ... do
pdw[i] = pdw[i] + c;



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
10-1069230228
РВА
2003-11-19 11:23
2004.12.05
Запуск приложения на клиенте


11-1083641459
yustas
2004-05-04 07:30
2004.12.05
Доп. компоненты.


1-1100766483
Игоръ
2004-11-18 11:28
2004.12.05
Сохранение картинки в файл: БитМап VS Jpeg


4-1098443115
Rusty
2004-10-22 15:05
2004.12.05
Как отловить потерю фокуса компонентом?


8-1093708660
Den
2004-08-28 19:57
2004.12.05
Наложение текстуры