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