0

我正在将程序从 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 完成的)吗?

4

1 回答 1

0

虽然 LB2 和 LB3 API 非常不同,但您应该能够毫不费力地移植此代码。当您在运行时动态创建组件时,您不需要将包安装到您的 IDE 中,只要您的库路径设置为包含 LB3 源。

于 2013-11-27T14:32:56.813 回答