我正在评估数字签名的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;