Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
йцйцуун   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
1-1101031606
InfMag
2004-11-21 13:06
2004.12.05
Как убрать из окна, которое слево от трея мою прогу?


4-1098335636
sergeii
2004-10-21 09:13
2004.12.05
Toolbar+Mouse Click


4-1098427511
Виктор
2004-10-22 10:45
2004.12.05
Thread


3-1099593732
Zif
2004-11-04 21:42
2004.12.05
Как удалить значения одного из столбцов в БД?


14-1100524967
Kolan
2004-11-15 16:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский