我是加密/解密例程的新手。我正在尝试使用我想将我的应用程序迁移到的 Lockbox3,以便解密使用 DCPCrypt 加密的字符串。假设我有这个加密功能:
function TfrmMain.Encrypt(value: string): string;
var
CipherR : TDCP_rijndael;
m, sm, Key, IV: string;
Data: string;
begin
Key := PadWithZeros(m, KeySize);
IV := PadWithZeros(sm, BlockSize);
Data := PadWithZeros(value, BlockSize);
m := 'SOMEWORDSOMEWORD';
sm := 'WORDSOMEWORDSOME';
Key := PadWithZeros(m, KeySize);
IV := PadWithZeros(sm, BlockSize);
CipherR := TDCP_rijndael.Create(Self);
if Length(m) <= 16 then
CipherR.Init(Key[1], 128, @IV[1])
else if Length(m) <= 24 then
CipherR.Init(Key[1], 192, @IV[1])
else
CipherR.Init(Key[1], 256, @IV[1]);
CipherR.EncryptCBC(Data[1], Data[1], Length(Data));
CipherR.Free;
FillChar(Key[1], Length(Key), 0);
code := Base64EncodeStr(Data);
Result := code;
end;
我现在想解密使用 Lockbox3 以这种方式加密的字符串,但我应该使用 encrypt 函数中使用的值作为 m 和 sm,我知道我该怎么做 - 如果可以的话。我想使用 sm 值来设置 Codec1.Password 但这不起作用。
任何的想法?感谢大家的任何建议。