gpt4 book ai didi

java - EC 签名大小?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:50:01 28 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间。这是我的场景。我正在尝试生成 25 个字符的软件产品 key (如 Microsoft 样式 FFFFF-EEEEE-DDDDD-BBBBB-77777)。我已经成功生成了 nonce(原始产品 key )——根据这篇文章,我的最终产品 key (在以 base 24 格式编码之前)应该正好是 15 个字节(4 个字节用于我的 nonce,11 个字节用于我的数字签名)。

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

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

我的问题是:

  1. EC key 大小(以位为单位)之间的关系究竟是什么以及生成的 EC 签名的长度(以字节为单位)?

  2. 例如,一个 128 位的 EC key 应该产生一个签名大小多少字节?

  3. 我如何生成一个 11 字节的签名(顺便说一句,我确定在 Windows XP 时代没有 EC key - 所以 MS 没有使用 EC - 是有更好的方法吗?比如说使用 RSA 32 位 key 或其他什么?)?

  4. 还有字符串的大小(在我的例子中是一个只有 9 的字符串正在签名的字符,例如“123456789”在最终长度中发挥作用签名?

为此苦苦挣扎了一段时间,在网上到处搜索 - 有很多技术讲座的答案 - 但没有具体回答我的问题(我得到的最接近的是 this article for RSA keys )

我希望我能得到一些快速的回应——我的项目已经推迟了几周。谢谢大家!

最佳答案

我知道没有安全的签名方案可以生成这么小的签名。

  • 原始 ECC 签名(ECDSA 等)是安全级别的四倍。如果您想要 80 位安全级别(使用 160 位曲线),您将获得 40 字节的签名。您可以削减几个字节,牺牲一点安全性,但将其分解为 20 到 30 字节之间的某个位置变得微不足道。

    128 位曲线(64 位安全性,可以破解,但可能太昂贵而不值得)将产生 32 字节签名。

  • 有限域签名(DSA 等)与具有相同安全级别的 ECC 签名的大小相同。

  • RSA 签名的大小与模数相同。使用相当小的 768 位 key ,您可以获得 96 字节的签名。

  • BLS 签名非常接近。签名大小仅为安全级别的两倍。 80 位级别的 20 个字节。 64 位级别的 16 个字节。您应该能够通过截断再减少两个字节左右,以换取更长的签名验证时间。

关于java - EC 签名大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14953113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com