首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECDSA签名长度

ECDSA签名长度
EN

Cryptography用户
提问于 2017-03-23 18:42:49
回答 1查看 8K关注 0票数 1

我使用"secp192k1“曲线来生成使用ECDSA方案进行数据签名的密钥。签名使用BouncyCastle提供的“SHA3-256 256withECDSA”算法生成。

理论上,签名的长度应该是192*2/8 =48个字节。相反,这个长度从54到56不等。

我的应用程序需要一个固定长度的签名。我怎样才能做到这一点?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2017-03-24 11:04:52

要对签名进行编码,首先必须解析dave_thomson_085提供的链接答案中也显示的ASN.1结构。在选择的编程语言/运行时中获得两个整数之后,就需要将它们编码为两个静态大小的整数编码。这些整数(通常)需要是大端/网络顺序,无符号整数。

要做到这一点,您需要从RSA规范中实现一个名为I2OSP的函数。将这两个数字和键大小(曲线顺序的大小)向上舍入为字节(即192 / 8 = 24字节)。

有两种方法可以做到这一点:

  • 直接实现数学函数并连接生成的字节或
  • 将整数编码回字节(大多数平台都有此功能),然后通过填充和可能逆转编码来调整编码。

后者可能更快,因为它只需要字节操作。我通常选择后者,但我看到许多密码学家(在我看来是天真的)做第一。

最后,您只需将数字和预置连接起来--您已经完成了(在RSA中也有OS2IP,以防您需要做相反的操作)。

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

https://crypto.stackexchange.com/questions/44988

复制
相关文章

相似问题

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