Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

RSA - Шифрование   Найти похожие ветки 

 
Hkr ©   (2005-09-23 17:08) [0]

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


 
Alexander Panov ©   (2005-09-23 17:52) [1]

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.


 
Eraser ©   (2005-09-23 20:18) [2]


> Hkr ©   (23.09.05 17:08)

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


 
Polevi ©   (2005-09-24 08:53) [3]

MS CryptoAPI


 
Hkr ©   (2005-09-24 15:30) [4]

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

Пасиба :)


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


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


 
Eraser ©   (2005-09-24 15:34) [5]


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

Ну тогда [3].


 
Hkr ©   (2005-09-24 19:54) [6]


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

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


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


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

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


 
Hkr ©   (2005-09-25 15:11) [8]


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

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


 
Eraser ©   (2005-09-25 15:24) [9]


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

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


 
DiamondShark ©   (2005-09-25 16:36) [10]

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


 
Hkr ©   (2005-09-26 10:10) [11]


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

и на NT 4.0?


 
DiamondShark ©   (2005-09-26 11:54) [12]

И на NT 4.0


 
Hkr ©   (2005-09-27 16:27) [13]


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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
2-1126642440
markon
2005-09-14 00:14
2005.10.16
Вызов функции, написанной в одном модуле из другого модуля


2-1127212304
ZSergey
2005-09-20 14:31
2005.10.16
Как получить значение ...


1-1127556641
Sergey_R
2005-09-24 14:10
2005.10.16
Генерация TreeView в runtime


2-1125850871
Lower_
2005-09-04 20:21
2005.10.16
Stringgrid


6-1119913547
LzeX7
2005-06-28 03:05
2005.10.16
POST запрос на winsock как правельно?





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