2013-11-26 97 views
0

我正在將程序從Delphi 2009移植到XE4,並遇到LockBox加密問題。加密/解密單元只使用一個組件:在沒有安裝的情況下使用LockBox3與Delphi XE4

interface 

    function Encrypt(aStr: String): String; 
    function Decrypt(aStr: String): String; 
    function NeedEncrypt(): Boolean; 

    implementation 

    uses 
    windows, 
     strUtils, 
     LbClass; 

    var 
     LbRijndael: TLbRijndael; 
     localNeedEncrypt: Boolean; 





    function NeedEncrypt(): Boolean; 
    begin 
     Result := localNeedEncrypt; 
     localNeedEncrypt := False; 
    end; 

function Encrypt(aStr: AnsiString): AnsiString; 
begin 
    Result := aStr; 
    if RightStr(aStr, 2) = '==' then 
    Exit; 
    Result := LbRijndael.EncryptString(aStr); 
end; 

function Decrypt(aStr: AnsiString): AnsiString; 
begin 
    Result := aStr; 
    if RightStr(aStr, 2) = '==' then 
    Result := LbRijndael.DecryptString(aStr) 
    else 
    localNeedEncrypt := True; 
end; 

    initialization 
     LbRijndael := TLbRijndael.Create(nil); 
     LbRijndael.GenerateKey('KEYABC'); 
     LbRijndael.CipherMode := cmECB; 
     LbRijndael.KeySize := ks128; 

    end. 

據我所知,Delphi XE4沒有LockBox2。 我可以爲此使用LockBox3嗎?如果是,我可以在沒有安裝到德爾福的情況下使用剛剛需要的單元(這是通過LockBox2完成的)?

+4

我刪除了關於開源替代品的問題,因爲這應該至少是一個單獨的問題,儘管要求庫推薦通常不是StackOverflow上的一個好問題。 –

回答

0

雖然LB2和LB3的API差別很大,但您應該能夠在不太困難的情況下移植這些代碼。由於您在運行時動態創建組件,因此您不需要將軟件包安裝到您的IDE中,只要您的庫路徑設置爲包含LB3源代碼。

相關問題