我正在评估TurboPower LockBox库进行数字签名。我创建了一个1024位的RSA密钥,并试图用它来签署一个260字节的文本。更改文本中的一个或两个字符后,签名仍然有效。这可以吗?或者这可能是这个库的问题。 改变一个角色也有至关重要的作用。我需要创建一个更大的密钥吗?
更新
为了测试库我使用了它附带的演示应用程序。我已经生成了一个1024 RSA密钥对,然后尝试了数字签名功能。首先,我尝试了一个真正的260位文本文件,发现我可以更改其中的一些字符,签名仍然有效。然后我把它缩小到了followinf字符串:
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAA 8
当我改变'8'字符时它仍然有效。我甚至可以缩小范围。
执行验证的代码是:
Signatory1: TSignatory;
....
var
DocumentStream, SignatureStream: TStream;
....
DocumentStream := TFileStream.Create( edtRSADocumentFile.Text, fmOpenread);
try
SignatureStream := TFileStream.Create( edtRSASignatureFile.Text, fmOpenread);
try
Res := Signatory1.Verify( DocumentStream, SignatureStream)
finally
SignatureStream.Free
end;
finally
DocumentStream.Free;
end;
答案 0 :(得分:1)
首先,我不会认为该库有任何问题,因为它已被使用多年。您不应该能够更改输入并使用相同的签名来验证它并且它可以工作。 Keysize不会发挥作用。
要获得真正的答案,我会扩展你的问题 - 什么版本的Delphi?你能展示一些代码吗?
答案 1 :(得分:0)
LockBox 3在数字签名组件的实现中存在错误。 LockBox 2.07可以正确签名和验证签名,但加载/保存密钥在Delphi 2010中不起作用。