Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1124799544
Boogier
2005-08-23 16:19
2005.09.18
Не удается найти файл d7vcl.hlp


1-1124201283
Сашка
2005-08-16 18:08
2005.09.18
поиск по географическим картам


6-1117174806
DVYdm
2005-05-27 10:20
2005.09.18
Отправление факса


14-1124451905
vajo
2005-08-19 15:45
2005.09.18
Проблемы с Flash Drive 512M


2-1123824025
rts111
2005-08-12 09:20
2005.09.18
Как вызвать такой диалог?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский