Крипто-форум crprogram.16mb.com

Програмування, Delphi, криптографія, криптоаналіз, шифри, вихідні коди, вирішення задач, приклади програм

Часовий пояс: UTC десь + 2 години




Розпочати нову тему Відповісти  [ 7 повідомлень ] 
Автор Повідомлення
 Заголовок повідомлення: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Мені вдалося знайти в інтернеті бібліотеку вихідних кодів шифрів
Symmetric cryptographic functions

Blowfish
Twofish
IDEA
Cast128, Cast256
Mars
RC2, RC4, RC5, RC6
Rijndael / AES
Square
SCOP
Sapphire
1DES, 2DES, 3DES, 2DDES, 3DDES, 3TDES
3Way
Gost
Misty
NewDES
Q128
SAFER
Shark
Skipjack
TEA, TEAN
Block cipher modes of operation

CTSx
CBCx
CFB8
CFBx
OFB8
OFBx
CFSx
ECBx
Hashes

MD2, MD4, MD5
RipeMD128, RipeMD160, RipeMD256, RipeMD320
SHA, SHA1, SHA256, SHA384, SHA512
Haval128, Haval160, Haval192, Haval224, Haval256
Tiger
Panama
Whirlpool, Whirlpool1
Square
Snefru128, Snefru256
Sapphire

Supported Development Environments
Delphi Versions 5, 6, 7, 2006, 2007, 2009, 2010 and newer
C++ Builder Versions 5, 6, 2006, 2007, 2009, 2010 and newer
RAD Studio (Win32 Personalities only)
Допоможіть будь-ласка в них розібратися


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Ось самі бібліотеки


Вкладення:
Part_I.rar [248.07 KiB]
Скачали: 101
Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Друга частина і посилання на першоджерело
https://code.google.com/p/delphidec/


Вкладення:
Part2.rar [43.42 KiB]
Скачали: 110
Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Таких бібліотек дуже багато, і для різних мов програмування, часто для C++.

Я б не радив ставити за мету кількість, самі по собі реалізації без розуміння мало що дають, краще спробуйте розібратись* з простими алгоритмами
почніть з класичної криптографії
classic-cryptography-f7.html

---------
*розібратись - значить дійсно розуміти суть, знати для чого та чи інша частина, як саме працює і т.д.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Я просто хочу реалізувати в моєму додатку млжливість вибору алгоритму шифрування. І хочеться щоб користувач мав вибір.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Ось інструкція для використання цих бібліотек
1.Під'єднуєте потрібний модуль до проекту
2.Використовуєте наступні функції в вашому проекті.

Працює на Delphi 7
На Delphi XE5 з невідомої мені причини видає помилки
Якщо виникає помилка в рядку
DCP_rijndael1 := TDCP_rijndael.Create(Self);
То Self замініть на назву форми де розміщений елемент.

Функція для шифрування рядка

function EncryptString(Source, Password: string): string;
var
DCP_rijndael1: TDCP_rijndael;
begin
DCP_rijndael1 := TDCP_rijndael.Create(Self); // створюєм об'єкт
DCP_rijndael1.InitStr(Password, TDCP_sha1); // ініціалізуєм
Result := DCP_rijndael1.EncryptString(Source); // шифруєм
DCP_rijndael1.Burn; // стираєм інфо про ключ
DCP_rijndael1.Free; // знищуємо об'єкт
end;


Розшифровування рядка

function DecryptString(Source, Password: string): string;
var
DCP_rijndael1: TDCP_rijndael;
begin
DCP_rijndael1 := TDCP_rijndael.Create(Self); // Створюємо об'єкт
DCP_rijndael1.InitStr(Password, TDCP_sha1); // Ініціалізуємо
Result := DCP_rijndael1.DecryptString(Source); // дешифруємо
DCP_rijndael1.Burn; // стираємо інфо про ключ
DCP_rijndael1.Free; // знищуємо об'єкт
end;


Зашифрувати файл

function EncryptFile(Source, Dest, Password: string): Boolean;
var
DCP_rijndael1: TDCP_rijndael;
SourceStream, DestStream: TFileStream;
begin
Result := True;
try
SourceStream := TFileStream.Create(Source, fmOpenRead);
DestStream := TFileStream.Create(Dest, fmCreate);
DCP_rijndael1 := TDCP_rijndael.Create(Self);
DCP_rijndael1.InitStr(Password, TDCP_sha1);
DCP_rijndael1.EncryptStream(SourceStream, DestStream, SourceStream.Size);
DCP_rijndael1.Burn;
DCP_rijndael1.Free;
DestStream.Free;
SourceStream.Free;
except
Result := False;
end;
end;


Дешифрувати файл

function DecryptFile(Source, Dest, Password: string): Boolean;
var
DCP_rijndael1: TDCP_rijndael;
SourceStream, DestStream: TFileStream;
begin
Result := True;
try
SourceStream := TFileStream.Create(Source, fmOpenRead);
DestStream := TFileStream.Create(Dest, fmCreate);
DCP_rijndael1 := TDCP_rijndael.Create(Self);
DCP_rijndael1.InitStr(Password, TDCP_sha1);
DCP_rijndael1.DecryptStream(SourceStream, DestStream, SourceStream.Size);
DCP_rijndael1.Burn;
DCP_rijndael1.Free;
DestStream.Free;
SourceStream.Free;
except
Result := False;
end;
end;


Тип шифрування можна змінити з мінімальною зміною коду

uses
DCPdes, ...

...

function EncryptString(Source, Password: string): string;
var
DCP_3des1: TDCP_3des;
begin
DCP_3des1 := TDCP_3des.Create(Self);
DCP_3des1.InitStr(Password, TDCP_sha1);
Result := DCP_3des1.EncryptString(Source);
DCP_3des1.Burn;
DCP_3des1.Free;
end;

Як тільки дізнаюсь як їх використати в середовищі Delphi XE5 одразу напишу.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Криптографічні бібліотеки для Delphi
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 17
Аналогічні функції для обчислення хешу файла.

function GetFileHash(FileName: string): string;
var
Hash: TDCP_sha1;
Digest: array[0..19] of byte; //sha1 обчислює 160 бітну суму (20 байт)
Source: TFileStream;
i: integer;
begin
Source:= TfileStream.Create(FileName,fmOpenRead);
Hash:= TDCP_sha1.Create(Self); // створбємо об'єкт
Hash.Init; // ініціалізуєм
Hash.UpdateStream(Source,Source.Size); // обчислюємо хеш-суму
Hash.Final(Digest); // зберігаємо в масив
Source.Free; // знищуємо об'єкт
Result := DigestToStr(Digest); // отримуємо хеш-сумму рядком
end;


Як можна помітити тут є специфічна функція DigestToStr(Digest);
Її код

function DigestToStr(Digest: array of byte): string;
var
i: Integer;
begin
Result := '';
for i := 0 to 19 do
Result := Result + LowerCase(IntToHex(Digest[i], 2));
end;


Обчислення хешу рядка

function GetStringHash(Source: string): string;
var
Hash: TDCP_sha1;
Digest: array[0..19] of Byte;
begin
Hash := TDCP_sha1.Create(Self);
Hash.Init;
Hash.UpdateStr(Source);
Hash.Final(Digest);
Hash.Free;
Result := DigestToStr(Digest);
end;


Повернутися наверх
  
 
Показати повідомлення за:  Сортувати по:  
Розпочати нову тему Відповісти  [ 7 повідомлень ] 

Часовий пояс: UTC десь + 2 години



cron
Роwеrеd bу рhрВB® аnd Hostinger web hosting