![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование с шифрованием
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;