编程语言
首页 > 编程语言> > java – EC签名大小?

java – EC签名大小?

作者:互联网

我已经挣扎了一段时间了.这是我的情景.我正在尝试生成25个字符的软件产品密钥(如Microsoft风格的FFFFF-EEEEE-DDDDD-BBBBB-77777).我已经通过nonce(原始产品密钥)成功生成 – 根据这篇文章,我的最终产品密钥(在以24格式编码之前)应该恰好是15个字节(我的nonce为4个字节,我的数字签名为11个字节).

现在的问题是如何生成一个11字节的签名?我尝试使用当前最短的签名加密(ECC – 使用secp128r2曲线 – 它给我一个128位私钥).签名后,我的签名大小为80字节(由Java语句打印)

System.out.println("length: "+signedProductKeyBytes.length);

我的问题是:

> EC密钥大小(以位为单位)之间的关系究竟是什么
以及生成的EC签名的长度(以字节为单位)?
>例如,128位的EC密钥应该产生一个
签名大小是多少字节?
>我如何生成一个11字节的签名(顺便说一下,我确定在那里
在Windows XP时代,没有EC密钥 – 所以MS没有使用EC – 是
还有更好的方法吗?比如说使用RSA 32位密钥?)?
>也是字符串的大小(在我的情况下,它只是一个9的字符串
例如签名的“123456789”在最终长度中起作用
签名?

已经挣扎了一段时间,在网上到处搜索 – 通过大量的技术会谈得到答案 – 但没有具体回答我的问题(我最接近的是this article for RSA keys)

我希望我得到一些快速反应 – 我的项目已经很晚了几周.
多谢你们!

解决方法:

我知道没有生成小签名的安全签名方案.

>原始ECC签名(ECDSA等)是安全级别的四倍.如果您需要80位安全级别(使用160位曲线),您将获得40个字节的签名.你可以减少几个字节,牺牲一些安全性,但是将它打破到20到30个字节之间变得微不足道.

一个128位曲线(64位安全性,可以被破坏,但它可能太昂贵而不值得)将产生一个32字节的签名.
>有限字段签名(DSA等)与具有相同安全级别的ECC的签名具有相同的大小.
> RSA签名与模数大小相同.使用相当小的768位密钥,您可以获得96字节的签名.
> BLS签名非常接近.签名大小只是安全级别的两倍. 80位的20个字节. 64位的16字节.您应该能够通过截断来削减另外两个字节,以换取更高的签名验证时间.

标签:java,security,cryptography,digital-signature
来源: https://codeday.me/bug/20190825/1723650.html