代码之家  ›  专栏  ›  技术社区  ›  Max

密码箱数字签名组件问题

  •  4
  • Max  · 技术社区  · 14 年前

    我在评估 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;
    
    2 回复  |  直到 13 年前
        1
  •  1
  •   Darian Miller    14 年前

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

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

        2
  •  0
  •   Max    14 年前

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