2011-07-31 41 views
5

Necesito un componente o biblioteca (lo más simple posible, y ninguna DLL sería genial) para encriptar un texto, descifrar otro, usar claves públicas generado por OpenSSL.Necesito un componente/biblioteca Delphi que me permita encriptar/descifrar texto usando RSA

Pensé que usaría LockBox (la nueva versión, v3), pero según otros usuarios aquí no es tan bueno como la versión anterior, y más importante aún, no puede usar claves de otras bibliotecas. (Consulte OpenSSL's PEM file and Lockbox3 interoperability)

Estoy usando Delphi 7. ¿Alguna sugerencia?

+1

¿Por qué "No DLL"? El uso de la DLL de openssl le dará una interoperabilidad de openssl fácilmente. Puede empacar el dll en el instalador de su aplicación. – osgx

Respuesta

4

Nuestra voluntad SecureBlackbox Hacer el trabajo. Delphi 7 es compatible. También se admiten certificados y claves en formato PEM (si tiene una clave RSA sin procesar codificada en PEM, tendrá que escribir un par de líneas de código para desenvolverla, y los certificados X.509 se cargan desde PEM con una llamada de función) .

6

Utilizamos Lockbox 2 en Delphi 2010 y funciona genial. Supongo que también debe trabajar con Delphi 7. Esto es un ejemplo de código:

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 incluye una aplicación de demostración que le permite generar las claves públicas y privadas.

Cuestiones relacionadas