Dee*_*der 3 java security cryptography digital-signature
我已经挣扎了一段时间了.这是我的情景.我正在尝试生成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);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
EC密钥大小(以位为单位)与生成的EC签名长度(以字节为单位)之间的关系究竟是什么?
例如,128位的EC密钥应该产生多少字节的签名大小?
我如何生成一个11字节的签名(顺便说一下,我确定在Windows XP时代没有EC密钥 - 所以MS没有使用EC - 有更好的方法吗?假设使用RSA 32位密钥或者其他的东西?)?
字符串的大小(在我的情况下,它只是9个字符的字符串,例如"123456789"被签名在签名的最后长度中起作用?
已经挣扎了一段时间,在网上到处搜索 - 通过大量的技术会谈回答 - 但没有具体回答我的问题(我得到的最近的是 RSA密钥的这篇文章)
我希望我得到一些快速反应 - 我的项目已经很晚了几周.多谢你们!
我知道没有生成小签名的安全签名方案.
原始ECC签名(ECDSA等)是安全级别的四倍.如果您需要80位安全级别(使用160位曲线),您将获得40个字节的签名.你可以减少几个字节,牺牲一些安全性,但是将它打破到20到30个字节之间变得微不足道.
一个128位曲线(64位安全性,可以被破坏,但它可能太昂贵而不值得)将产生一个32字节的签名.
有限字段签名(DSA等)具有与具有相同安全级别的ECC的签名相同的大小.
RSA签名具有与模数相同的大小.使用相当小的768位密钥,您可以获得96字节的签名.
BLS签名非常接近.签名大小只是安全级别的两倍.80位的20个字节.64位的16字节.您应该能够通过截断来削减另外两个字节,以换取更高的签名验证时间.
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |