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

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

RSA - Шифрование [D7, NT4, Win2k, WinXP]


Hkr ©   (2005-09-23 17:08:00) 

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


Hkr   (2005-09-27 16:27:00) [1]


> DiamondShark ©   (26.09.05 11:54) [12]
> И на NT 4.0

Это хорошо :))), тогда такой вопрос: как его использовать :)


DiamondShark   (2005-09-26 11:54:00) [2]

И на NT 4.0


Hkr   (2005-09-26 10:10:00) [3]


> DiamondShark ©   (25.09.05 16:36) [10]
> Не надо ничего устанавливать. Сам API и базовый провайдер
> есть на любой машине.
> Так что RSA использовать можно.

и на NT 4.0?


DiamondShark   (2005-09-25 16:36:00) [4]

Не надо ничего устанавливать. Сам API и базовый провайдер есть на любой машине.
Так что RSA использовать можно.


Eraser   (2005-09-25 15:24:00) [5]


> Hkr ©   (25.09.05 15:11) [8]

Скорее всего установка сводиться к копированию определёных библиотек.


Hkr   (2005-09-25 15:11:00) [6]


> Eraser ©   (24.09.05 19:57) [7]
>
> > Hkr ©   (24.09.05 19:54) [6]
>
> Их несколько версий есть. Скорее всего можно установить
> последнюю.

Установить.. :(, не... тогда не получится... нам на инфе никто не разрешит ничего устанавливать там...
а тогда еще 1.. вопрос.. а нету RSA на С++? просто тогда можно было бы сделать длл и из нее экспортировать функции :)


Eraser   (2005-09-24 19:57:00) [7]


> Hkr ©   (24.09.05 19:54) [6]

Их несколько версий есть. Скорее всего можно установить последнюю.
Смотри в MSDN.


Hkr   (2005-09-24 19:54:00) [8]


> Eraser ©   (24.09.05 15:34) [5]
>
> > Hkr ©   (24.09.05 15:30) [4]
>
> Ну тогда [3].

э... MS CryptoAPI... хм... а NT4.0 поддерживает его?


Eraser   (2005-09-24 15:34:00) [9]


> Hkr ©   (24.09.05 15:30) [4]

Ну тогда [3].


Hkr   (2005-09-24 15:30:00) [10]

>Alexander Panov ©   (23.09.05 17:52) [1]

Пасиба :)


> Eraser ©   (23.09.05 20:18) [2]
>
> > Hkr ©   (23.09.05 17:08)
>
> Смотри компоненты LockBox на torry.net они.


Да я их видел, но. .я не хочу компоненты и классы, я хочу, чтобы это был набор процедур... так и памяти меньше ест и потом, если что, на другой алгоритм шифрования легче перенести :)


Polevi   (2005-09-24 08:53:00) [11]

MS CryptoAPI


Eraser   (2005-09-23 20:18:00) [12]


> Hkr ©   (23.09.05 17:08)

Смотри компоненты LockBox на torry.net они.


Alexander Panov   (2005-09-23 17:52:00) [13]

DCU взять здесь - http://www.crypto-central.com/

А здесь я треировался, все роверь и можешь использовать.

unit Unit2;

interface

uses classes, SysUtils, RSA;

procedure CreateKeys(var Priv,Pub: String);
function LoadKey(Filename: String): String;
procedure SaveKey(const Key,Filename: String);

function EncryptStr(const SrcStr,Priv,Pub: String): String;
function DecryptStr(const SrcStr,Priv,Pub: String): String;

implementation

procedure CreateKeys(var Priv,Pub: String);
var
 SeedP: BigNum;         // holds the seed for the random search of Prime1
 SeedQ: BigNum;         // holds the seed for the random search of Prime2
 PrimeLength: Integer;  // holds the number of significant 32 bit words
 i: integer;            // loop counter
 RSA: TRSA;
begin
 RSA := TRSA.Create(nil);
 RSA.KeyBits := kb0512;
 RSA.SymKeyLength := sk64;
 Randomize;
 try
   PrimeLength := RSA.GetPrecision;

   for i := 0 to PrimeLength do
   begin
        SeedP.Contents[i] := Random($FFFFFFFF);
        SeedQ.Contents[i] := Random($FFFFFFFF);
    end;

    RSA.MakeKeyPair(SeedP, SeedQ);

    Priv := RSA.PrivateKey;
    Pub := RSA.PublicKey;

   finally
     RSA.Free;
   end;
end;

function EncryptStr(const SrcStr,Priv,Pub: String): String;
var
 RSA: TRSA;
begin
 RSA := TRSA.Create(nil);
 RSA.KeyBits := kb0512;
 RSA.SymKeyLength := sk64;

 RSA.PrivateKey := Priv;
 RSA.PublicKey := Pub;

 try
   RSA.EncryptString(SrcStr,Result);
 finally
   RSA.Free;
 end;
end;

function DecryptStr(const SrcStr,Priv,Pub: String): String;
var
 RSA: TRSA;
begin
 RSA := TRSA.Create(nil);
 RSA.KeyBits := kb0512;
 RSA.SymKeyLength := sk64;

 RSA.PrivateKey := Priv;
 RSA.PublicKey := Pub;

 try
   RSA.DecryptString(SrcStr,Result);
 finally
   RSA.Free;
 end;
end;

procedure SaveKey(const Key,Filename: String);
var
 fs: TFileStream;
begin
 fs := TFileStream.Create(FileName,fmCreate);
 try
   fs.Write(Key[1],Length(Key));
 finally
   fs.Free;
 end;
end;

function LoadKey(Filename: String): String;
var
 fs: TFileStream;
 Len: Integer;
begin
 SetLength(Result,1024);
 fs := TFileStream.Create(FileName,fmOpenRead);
 try
   Len := fs.Read(Result[1],1024);
   SetLength(Result,Len);
 finally
   fs.Free;
 end;
end;

end.


Наверх

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