Текущий архив: 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