我开始使用 Delphi 的TurboPower Lockbox。不幸的是,我找不到任何文档,所以我使用基本功能来尝试并找出Lockbox的工作原理。在下面的例子中,我有一个按钮用于将明文加密为密文,还有一个按钮用于将密文解密回明文。这似乎可以工作,但请注意,我使用了不同的加密和解密密钥。(生成的密文也总是相同的,无论密钥/密码是什么。
所以很明显,我要么使用了错误的SetKey方法,要么我错过了一个步骤。
procedure TMainForm.BtnEncryptClick(Sender: TObject);
begin
with TLbRijndael.Create(nil) do
try
SetKey('Key1');
EdtEncrypted.Text := EncryptString(EdtPlainText.Text);
finally
Free;
end;
end;
procedure TMainForm.BtnDecryptClick(Sender: TObject);
begin
with TLbRijndael.Create(nil) do
try
SetKey('Key2');
EdtDecrypted.Text := DecryptString(EdtEncrypted.Text);
finally
Free;
end;
end;
这段代码中有什么错误/遗漏?
编辑
Lockbox文档链接的额外积分:-)
1条答案
按热度按时间snz8szmq1#
您使用的是非常旧版本的Lockbox(Lockbox 2)。您可以在Turbo Power Lockbox Files上找到该版本的文档
您的代码的问题在于您从未设置过KeySize,并且默认情况下KeySize长度(以字节为单位)为0(由于TLbRijndael构造函数和析构函数中出现了bug)。在这种情况下,您的键匹配,因为您传递给SetKey()的内容实际上被忽略了。使用调试器并跟踪到SetKey()方法会显示move()语句移动的是零字节。
但是....除非确保传递给SetKey()的值长度为 key-sized bytes,否则不应直接调用SetKey()。相反,您应该调用**GenerateKey()**方法,该方法将接受一个字符串并生成适当大小的密钥。