Нужен компонент / библиотека Delphi, который позволяет мне шифровать / дешифровать некоторый текст с использованием RSA - PullRequest
5 голосов
/ 31 июля 2011

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

Я думал, что буду использовать LockBox(новая версия, v3), но, по словам других пользователей, она не так хороша, как старая версия, и, что более важно, не может использовать ключи из других библиотек.(см. PEM-файл OpenSSL и совместимость Lockbox3 )

Я использую Delphi 7. Есть предложения?

Ответы [ 3 ]

6 голосов
/ 31 июля 2011

Мы используем Lockbox 2 в Delphi 2010, и он прекрасно работает. Я думаю, это должно работать и с Delphi 7. Вот пример кода:

unit LBRSA; 

interface

uses
  LbCipher,
  LbRSA,
  LbString,
  LbUtils;

  function DecryptRSA(const CipherText: String): String; overload; overload;
  function DecryptRSA(const CipherText, Exponent, Modulus: String): String; overload;

implemention


function EncryptRSA(const ClearText, Exponent, Modulus: String): String;
var
  RSA: TLbRSA;
begin
  RSA := TLbRSA.Create(nil);
  try
    RSA.PublicKey.ExponentAsString := Exponent;
    RSA.PublicKey.ModulusAsString := Modulus;

    Result := RSA.EncryptStringW(ClearText);
  finally
    FreeAndNil(RSA);
  end;
end;

function DecryptRSA(const CipherText, Exponent, Modulus: String): String;
var
  RSA: TLbRSA;
begin
  RSA := TLbRSA.Create(nil);
  try
    RSA.PrivateKey.ExponentAsString := Exponent;
    RSA.PrivateKey.ModulusAsString := Modulus;

    Result := RSA.DecryptStringW(CipherText);
  finally
    FreeAndNil(RSA);
  end;
end;

end.

Lockbox включает в себя демонстрационное приложение, которое позволяет генерировать открытый и закрытый ключи.

4 голосов
/ 31 июля 2011

Наш SecureBlackbox выполнит эту работу.Delphi 7 поддерживается.Также поддерживаются сертификаты и ключи в формате PEM (если у вас есть необработанный ключ RSA, закодированный в PEM, вам потребуется написать пару строк кода, чтобы развернуть его, и сертификаты X.509 загружаются из PEM одним вызовом функции).

3 голосов
/ 31 июля 2011

Вот руководство, как импортировать libeay32.dll из openssl в delphi:

http://www.disi.unige.it/person/FerranteM/delphiopenssl/

У них есть файл шифрования / дешифрования с использованием RSA:

http://www.disi.unige.it/person/FerranteM/delphiopenssl/RSAEncrypt.html

...