Java EC签名尺寸?
我已经为此挣扎了一段时间。这是我的设想。我正在尝试生成25个字符的软件产品密钥(比如微软风格的FFFFF-eeee-DDDDD-BBBBB-77777)。我已经成功地通过nonce(原始产品密钥)生成了产品密钥——根据本文,我的最终产品密钥(在以base 24格式编码之前)应该正好是15个字节(nonce为4个字节,数字签名为11个字节) 现在的问题是如何生成11字节的签名?我尝试过使用目前最短的签名加密(ECC——使用一条secp128r2曲线——它给了我一个128位的私钥)。签名后,签名的大小为80字节(由Java语句打印)Java EC签名尺寸?,java,security,cryptography,digital-signature,Java,Security,Cryptography,Digital Signature,我已经为此挣扎了一段时间。这是我的设想。我正在尝试生成25个字符的软件产品密钥(比如微软风格的FFFFF-eeee-DDDDD-BBBBB-77777)。我已经成功地通过nonce(原始产品密钥)生成了产品密钥——根据本文,我的最终产品密钥(在以base 24格式编码之前)应该正好是15个字节(nonce为4个字节,数字签名为11个字节) 现在的问题是如何生成11字节的签名?我尝试过使用目前最短的签名加密(ECC——使用一条secp128r2曲线——它给了我一个128位的私钥)。签名后,签名的大
System.out.println("length: "+signedProductKeyBytes.length);
我的问题是:
谢谢大家!据我所知,没有安全的签名方案可以生成这么小的签名
- 原始ECC签名(ECDSA等)是安全级别的四倍。如果您想要80位的安全级别(使用160位曲线),您将获得40字节的签名。您可以减少几个字节,牺牲一点安全性,但在20到30字节之间的某个位置断开它将变得微不足道 128位曲线(64位安全性,可以被破坏,但它可能太昂贵而不值得)将生成32字节的签名
- 有限域签名(DSA等)与具有相同安全级别ECC的签名具有相同的大小
- RSA签名的大小与模数相同。使用相当小的768位密钥,可以获得96字节的签名
- BLS签名非常接近。签名大小仅为安全级别的两倍。80位级别为20字节。64位级别为16字节。您应该能够通过截断另外两个字节左右,以换取更高的签名验证时间