我想在长度为 300 bit 的文本上生成数字签名,在获取的签名中添加一些新文本,然后对生成的文本进行签名。
我使用了Bouncy Castle函数,并意识到在RSA签名方案中,密钥的大小必须大于输入长度。获得的输出长度等于密钥大小,通过添加新文本,密钥大小必须更大。但是,我想使用一键进行签名。 例如,我首先开始使用512位密钥,但对于第二次签名,我必须使用1024位密钥,而我有一个密钥用于签名。
我该怎么办?是否可能(使用Java或任何语言)?
答案 0 :(得分:1)
如果您坚持只使用512-bit
密钥,那么您可以在一次性中签署的最大数据长度为53 bytes=424 bits
,因此您必须拆分数据并单独签名。
例如 -
假设您在进行第二次签名之前的数据长度为500 bits
,那么
将其分为两组 - 424 bits
和66 bits
。然后分别签署这两个并连接结果。
的修改
还有一种方法可以做到,只使用 1键 -
2048 bits
。您可以对长度为245 bytes=1960bits
。Sign(SHA-1(Sign(data)+info))
1024-bit
进行上述签名。答案 1 :(得分:0)
为什么不编写一个简单的算法来创建另一个(Virtual Sign for you),只需将Sign加密为某些代码然后再使用它们。
它将为您解决两个目的。
希望它适合你:)