Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Внизкак реализовать шифрование типизированных файлов Найти похожие ветки
← →
ArMellon © (2005-08-24 03:49) [0]едиственное что пришло в голову это сохранять раскодированный файл в в папку темп и оттуда считывать.
но не хотелось бы этого делать...чтобы юзер случаем не залез или еще что...
вобщем что можете предложить по реализации задачи?
← →
Defunct © (2005-08-24 03:58) [1]> как реализовать шифрование типизированных файлов
Также как и нетипизированных: шифровать перед записью, расшифровывать при считывании.
← →
ArMellon © (2005-08-24 04:37) [2]Каким образом?
типа расшифровал файл на
диске
считал и обратно зашифровал?
можно ли как-нить это проделать в памяти а не на диске?
← →
Джо © (2005-08-24 04:42) [3]
> [2] ArMellon © (24.08.05 04:37)
Нет. Прочитал в память. Расшифровал там же. Поработал. Если изменились - зашифровал, записал обратно.
← →
ArMellon © (2005-08-24 04:55) [4]т.е.
Есть запись типа:
TMyRecord:=Record
Value1:String[50];
Value2:Integer;
...
end;
...
есть записть в файл:
var
F:File of TMyRecord;
Rec:TMyRecord;
begin
...
Rec.Value1:="blabla";
Rec.Value2:=10;
...
Write(F,Rec);
CloseFile(F);
...
end;
и аналогичное чтение файла
как можно это шифровать например xor`ом ?
← →
Defunct © (2005-08-24 05:04) [5]например так:
TEncodingArray = array[1..SizeOf( TMyRecord ) ];
PEncodingArray = ^TEncodingArray;
const
EncryptionKey = $79;
procedure EncodeRecord(var Buf: TMyRecord):TMyRecord;
var
EncPointer : PEncodingArray;
i : Integer;
CurrentKey : Byte;
begin
EncPointer := @Result;
CurrentKey := EncryptionKey;
for i := 1 to SizeOf(TMyRecord) do
begin
EncPointer[i] := TEncodingArray(Buf)[i] xor CurrentKey;
CurrentKey := CurrentKey + EncryptionKey;
end;
end;
Rec.Value2:=10;
...
Rec := EncodeRecord( Rec );
Write(F,Rec);
CloseFile(F);
...
при чтении:
Read(F, Rec);
Rec := EncodeRecord( Rec );
код не проверял, может быть есть ошибки, а может быть и нет, расскажешь.
← →
Джо © (2005-08-24 05:07) [6]Ну, например, у тебя есть процедура
procedure Crypt (Data: Pointer; Size: Integer; Key: Int64);
begin
// шифрует указанное кол-во байт начиная с адреса Data
end;
1. Crypt(@MyRecord,SizeOf(MyRecord));
2. Записываешь в файл.
Аналогично считываешь.
Если процедура шифрования изменяет размер данных (т.е, не твой ксор) - учесть динамическое выделение, реалокацию памяти.
Спать пошел.
← →
Джо © (2005-08-24 05:09) [7]
> [5] Defunct © (24.08.05 05:04)
Мои 2 копейки - не из конкурренции, просто опоздал ;) Думал, поленятся расписывать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c