Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Копирование с шифрованием


Страницы:   1 2

RustB ©   (2008-10-02 00:08:00) 

Нужна по возможности быстрая функция которая копировала и попутно зашифровывала бы файл, требования к алгоритму шифрования самые минимальные. Если кто сталкивался с подобным подскажите пожалуйсто.


  (2009-03-27 09:12:00) [1]

Удалено модератором


  (2009-03-27 08:52:00) [2]

Удалено модератором


  (2009-03-27 08:51:00) [3]

Удалено модератором


RustB   (2008-10-06 17:25:00) [4]

ВСЕМ ОГРОМНОЕ СПАСИБО!!!


blackman   (2008-10-05 19:32:00) [5]

Ерунда все это. Проще надо. Использовать например ARJ и с его помощью и шифровать и писать
http://articles.org.ru/docum/arj.php


Jeer   (2008-10-03 17:12:00) [6]

И, Боже мой - как много букв произнесено,
И много-ль смысла в них привнесено ?
Помог-ли страждущему водой
Преподнесенный, и кипящий чайник, мной ?
(C) Jeer


Eraser   (2008-10-03 15:14:00) [7]

шифрование средствами крипто API
function EncryptData(ASessionKey: THandle; AData: TStream): Boolean;
var
 dwLength, bufLen: DWORD;
 bReturn: Boolean;
begin
 Result := False;
 if ASessionKey = 0 then
   Exit;
 EnterCriticalSection(csCrypto);
 try
   // Зашифруем поток AData
   dwLength := AData.Size;
   bufLen := AData.Size;

   // Определяем размер буффера для зашифрованых данных.
   // Для блочных шифров необходимо добавить примерно 10 байт.
   bReturn := CryptEncrypt(ASessionKey, 0, True, 0, nil, @dwLength,
     AData.Size);
   if not bReturn then
     Exit;

   AData.Size := dwLength + 20;

   // Скопируем незашифрованные данные в выделеный буффер.
   AData.Position := 0;
   dwLength := AData.Size;

   // Шифруем.
   bReturn := CryptEncrypt(ASessionKey, 0, True, 0, TMemoryStream(AData).Memory,
     @bufLen, AData.Size);
   if not bReturn then
     Exit;

   AData.Size := bufLen;
   AData.Position := 0;
   Result := True;
 finally
   LeaveCriticalSection(csCrypto);
 end;
end;

function DecryptData(ASessionKey: THandle; AData: TStream): Boolean;
var
 dwLength: DWORD;
 bReturn: Boolean;
begin
 Result := False;
 
 if ASessionKey = 0 then
   Exit;

 EnterCriticalSection(csCrypto);
 try
   dwLength := AData.Size;
   AData.Position := 0;

   // Расшифруем данные.
   bReturn := CryptDecrypt(ASessionKey, 0, True, 0, TMemoryStream(AData).Memory, @dwLength);
   if not bReturn then
     Exit;

   AData.Size := dwLength;
   AData.Position := 0;
   Result := True;
 finally
   LeaveCriticalSection(csCrypto);
 end;
end;

создание симметричного ключа

     bReturn := CryptGenKey(hProvParty2, dwAlgID,
       (dwSessionKeySize shl 16) or CRYPT_EXPORTABLE,
       @hSessionKey2);
     if not bReturn then
       Exit;


Поросенок Винни-Пух   (2008-10-03 13:01:00) [8]

я нигде и не утверждал, что это мое изобретение

я не про это. я про то, что похоже многие ставят винду только для того, чтобы появилась "полянка телепузиков" (дефолтные обои xp)ю После чего ишут замену проводнику, ie, блокноту, шедулеру и т.д.

а здесь вот предлагают свое крипто которое уже реализовано там.


Vlad Oshin   (2008-10-03 12:32:00) [9]


> Если RSA то нафиг еще и XOR?

xor быстрее и к данным, RSA только к ключу


Anatoly Podgoretsky   (2008-10-03 12:22:00) [10]

> @!!ex  (03.10.2008 11:13:22)  [22]

Если RSA то нафиг еще и XOR?


@!!ex   (2008-10-03 12:06:00) [11]

> [23] Поросенок Винни-Пух ©   (03.10.08 11:27)

естественно. я нигде и не утверждал, что это мое изобретение. классический подход к шифрованию.


Поросенок Винни-Пух   (2008-10-03 11:27:00) [12]

Поэтому генерим рандомом xor ключ, шифруем с его помощью файлик. ключ шифруем RSA, AES или любым другим, ключ отдаем.

получаем свой велосипедный PKI (асиметричное крипто на открытых ключах)


@!!ex   (2008-10-03 11:13:00) [13]

> [19] Ega23 ©   (03.10.08 10:12)

долгое. :)
Поэтому генерим рандомом xor ключ, шифруем с его помощью файлик. ключ шифруем RSA, AES или любым другим, ключ отдаем. зашифрованный xor ключ кладем рядом с файлом.
Если ты знаешь ключ, то расшифровываешь xor. что долго, но один раз. после чего с помощью xor ключа расшифровываешь данные.
в случае RSA вообще можно ключи по открытому каналу передавать.


Поросенок Винни-Пух   (2008-10-03 10:51:00) [14]

какие еще тонкости?


Ega23   (2008-10-03 10:14:00) [15]


> а про криптоапи никто и не вспомнил


С ним тонкости использования есть. Юридические.


Ega23   (2008-10-03 10:12:00) [16]


> @!!ex ©   (02.10.08 09:55) [4]
>
> xor, что тут думать... самая быстрая операция.
> делаешь башой ключ. шифруеш его RSA и все.
>


RSA долго. AES быстрее будет. Но это - симметричное, одним ключом и кодировать и декодировать можно, в отличие от RSA.


Поросенок Винни-Пух   (2008-10-03 09:26:00) [17]

эх, велосипедисты, велосипедисты .....
а про криптоапи никто и не вспомнил


Германн   (2008-10-03 01:56:00) [18]


> ПЗ   (02.10.08 21:17) [13]
>
> Не знаю, что понимается под копированием, но выше готовая
> консольная утилита для шифрования\расшифрования файла.

Т.е. в [13] это "отрыжка"? :)
Не знаю что спрашивали, но отвечаю то, что знаю :)


Германн   (2008-10-03 00:59:00) [19]

Какое огромное количество готовых решений для "незрелого" вопроса!
:)
Тогда и я добавлю решение. Создавать WinRAR-архив с паролем и с опцией "Шифровать имена файлов". Против этого лома очень трудно будет найти "другой лом"! :)


@!!ex   (2008-10-02 22:23:00) [20]

procedure THEXEditor.CryptXOR(const Key: TXORKey);
var
 KeyIT, DataIT:integer;
begin
 KeyIT:=0;
 for DataIT := 0 to Length(FData) - 1 do begin
   FData[DataIT]:=FData[DataIT] xor Key[KeyIT];
   inc(KeyIT);
   if (KeyIT>=Length(Key)) then
     KeyIT:=0;
 end;
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо