2011-07-31 12 views
5

Tôi cần một thành phần hoặc thư viện (càng đơn giản càng tốt và không có DLL nào là tuyệt vời) để mã hóa văn bản, giải mã mã khác được tạo bởi OpenSSL.Cần một thành phần/thư viện Delphi cho phép tôi mã hóa/giải mã một số văn bản bằng cách sử dụng RSA

Tôi nghĩ mình sẽ sử dụng LockBox (phiên bản mới, v3), nhưng theo những người dùng khác ở đây không tốt bằng phiên bản cũ, và quan trọng hơn, không thể sử dụng khóa từ các thư viện khác. (xem OpenSSL's PEM file and Lockbox3 interoperability)

Tôi đang sử dụng Delphi 7. Mọi đề xuất?

+1

Tại sao "Không có DLL"? Sử dụng DLL của openssl sẽ cho bạn khả năng tương tác openssl dễ dàng. Bạn có thể đóng gói dll vào trình cài đặt của ứng dụng của bạn. – osgx

Trả lời

4

SecureBlackbox sẽ của chúng tôi thực hiện công việc. Delphi 7 được hỗ trợ. Các chứng chỉ và khóa ở định dạng PEM cũng được hỗ trợ (nếu bạn có khóa RSA thô được mã hóa trong PEM, bạn sẽ cần phải viết một vài dòng mã để mở nó và chứng chỉ X.509 được nạp từ PEM với một cuộc gọi hàm) .

6

Chúng tôi sử dụng Lockbox 2 trong Delphi 2010 và nó hoạt động tuyệt vời. Tôi đoán nó cũng sẽ làm việc với Delphi 7. Đây là một mẫu mã:

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 bao gồm một ứng dụng demo cho phép bạn tạo khóa công khai và riêng tư.