Главная страница
    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.47 MB
Время: 0.045 c
1-1101296922
denis24
2004-11-24 14:48
2004.12.05
top,left


4-1098604585
Jetus
2004-10-24 11:56
2004.12.05
Запуск программ сервисом


4-1098448993
antonioxxx
2004-10-22 16:43
2004.12.05
Доступ к (драйверу) мыши


14-1100541100
Cerberus
2004-11-15 20:51
2004.12.05
Бесплатный хостинг


1-1101300025
Pretender
2004-11-24 15:40
2004.12.05
Подсчет символов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский