2011-07-31 8 views
5

Potrzebuję komponentu lub biblioteki (tak prostego, jak to możliwe, i żadne pliki DLL nie będą świetne) do zaszyfrowania tekstu, odszyfrowania innego, używając kluczy publicznych generowane przez OpenSSL.Potrzebujesz komponentu/biblioteki Delphi, która pozwala mi szyfrować/odszyfrowywać tekst za pomocą RSA

Pomyślałem, że użyłbym LockBox (nowa wersja, v3), ale według innych użytkowników tutaj nie jest tak dobry jak stara wersja, a co ważniejsze, nie może używać kluczy z innych bibliotek. (zobacz OpenSSL's PEM file and Lockbox3 interoperability)

Używam Delphi 7. Jakieś sugestie?

+1

Dlaczego "Brak DLL"? Korzystanie z biblioteki DLL openssl daje łatwość obsługi openssl. Możesz spakować bibliotekę dll do instalatora twojej aplikacji. – osgx

Odpowiedz

4

Nasz SecureBlackbox będzie wykonuj pracę. Delphi 7 jest obsługiwany. Obsługiwane są również certyfikaty i klucze w formacie PEM (jeśli masz surowy klucz RSA zakodowany w PEM, będziesz musiał napisać kilka linii kodu, aby go rozwinąć, a certyfikaty X.509 są ładowane z PEM za pomocą jednego wywołania funkcji) .

6

Używamy Lockbox 2 w Delphi 2010 i działa świetnie. Chyba powinien również pracować z Delphi 7. Oto przykładowy kod:

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 zawiera aplikację demo, który umożliwia generowanie kluczy publicznych i prywatnych.

Powiązane problemy