2013-11-26 53 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源代码。

相关问题