首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >签名生成的输入输出等长

签名生成的输入输出等长
EN

Stack Overflow用户
提问于 2012-11-21 12:34:57
回答 2查看 190关注 0票数 2

我想在长度为300位的文本上生成数字签名,在获得的签名中添加一些新文本,然后对结果文本进行签名。

在RSA签名方案中,密钥的大小必须大于输入长度。获得的输出长度等于键大小,通过添加新文本,键大小必须更大。但是,我想使用一个键进行签名。例如,我首先开始使用512位密钥,但对于第二次签名,我必须使用1024位密钥,而我只有一个密钥进行签名。

我怎么发动汽车呢?有可能(用Java或任何语言)吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-21 13:06:16

如果您坚持只使用512-bit键,您可以签名的最大数据长度是one split 中的53 bytes=424 bits,因此您必须拆分数据并分别签名。

例如-

假设您在进行第二个签名之前的数据长度是500 bits,然后将其拆分为两个集合-- 424 bits66 bits。然后分别对这两者进行签名并将结果连在一起。

编辑

还有一种方法可以做到,只使用1键-

  • 密钥大小为2048 bits。您可以将数据签名到245 bytes=1960bits的长度。
  • 在第一次符号操作和添加附加信息(例如,在符号(数据)+信息之后)之后,对结果执行SHA-512摘要。这将将结果压缩为64字节。
  • 然后再用同样的钥匙签名。

简而言之- Sign(SHA-1(Sign(data)+info))

注意:您也可以使用密钥长度1024-bit完成上述签名。

票数 1
EN

Stack Overflow用户

发布于 2012-11-21 13:04:44

为什么不编写一个简单的算法来创建另一个(为您创建虚拟签名),只需将签名加密成一些代码,然后使用这两个代码。

它会为你解决两个问题。

  • 你会有两个不同的签名
  • 您将能够使用您拥有的唯一的密钥。

希望它对你有用:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13493412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档