【发布时间】:2013-02-19 08:39:56
【问题描述】:
我已经为此苦苦挣扎了一段时间。这是我的场景。我正在尝试生成 25 个字符的软件产品密钥(如 Microsoft 风格的 FFFFF-EEEEEE-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”)在最终长度中起作用 签名?
为此苦苦挣扎了一段时间,在网上到处搜索 - 有很多技术讨论的答案 - 但没有具体回答我的问题(我得到的最接近的是 this article for RSA keys)
我希望我能得到一些快速响应 - 我的项目已经延迟了几周。 谢谢大家!
【问题讨论】:
-
为什么不直接抓取现有 80 个字节的前 11 个字节?只要是独一无二的,你关心其他属性吗……?
-
Rory,非常感谢您的快速回复! (1)我将如何验证签名?如果我使用公钥仅验证前 11 个字节,该代码是否仍然有效? (2) 由于截断,是否存在 2 个或更多签名的前 11 个字节可能匹配(不唯一)的可能性?谢谢
标签: java security cryptography digital-signature