4

我正在评估用于数字签名的TurboPower LockBox库。我创建了一个 1024 位 RSA 密钥并尝试用它签署一个 260 字节的文本。更改文本中的一两个字符后,签名仍然有效。那样可以么?或者也许这是这个库的问题。即使改变一个角色也会产生至关重要的影响。我需要创建一个更大的密钥吗?

更新

为了测试这个库,我使用了它附带的演示应用程序。我生成了一个 1024 RSA 密钥对,然后尝试了数字签名功能。首先,我尝试了一个真正的 260 位文本文件,发现我可以更改其中的一些字符并且签名仍然有效。然后我将其缩小到以下字符串:

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;
4

2 回答 2

1

首先,我不会认为图书馆有什么问题,因为它已经使用了多年。您不应该能够更改输入并使用相同的签名来验证它并且它可以工作。Keysize 不会发挥作用。

为了得到真正的答案,我会扩展你的问题——什么版本的 Delphi?你能显示一些代码吗?

于 2010-11-19T18:48:26.483 回答
0

LockBox 3 在数字签名组件的实现中存在一个错误。LockBox 2.07 可以正确签名和验证签名,但加载/保存密钥在 Delphi 2010 中不起作用。

于 2010-11-24T11:25:26.450 回答