我已经为此苦苦挣扎了一段时间。这是我的场景。我正在尝试生成 25 个字符的软件产品密钥(如 Microsoft 风格的 FFFFF-EEEEE-DDDDD-BBBBB-77777)。我已经通过 nonce(原始产品密钥)成功生成 - 根据这篇文章,我的最终产品密钥(在以 base 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”)是否在签名的最终长度中起作用?
已经为此苦苦挣扎了一段时间,在网上到处搜索 - 有很多技术讲座的答案 - 但没有具体回答我的问题(我得到的最近的是 这篇文章 RSA 密钥)
我希望我能得到一些快速的回应——我的项目已经延迟了几周。多谢你们!