我正在将程序从Delphi 2009移植到XE4,并且遇到了LockBox加密问题。加密/解密单元只使用一个组件:
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用于此目的吗?如果是的话,我可以在没有安装到Delphi的情况下使用刚才需要的单元(这是用LockBox2完成的)吗?
答案 0 :(得分:0)
虽然LB2和LB3 API非常不同,但您应该能够毫不费力地移植此代码。在运行时动态创建组件时,如果将库路径设置为包含LB3源,则不需要将软件包安装到IDE中。