【发布时间】:2018-01-30 20:52:28
【问题描述】:
我正在使用 secp256k1 曲线生成密钥对。然后我使用私钥对随机字符串进行签名:
byte[] content = "random string".getBytes();
Signature dsa = Signature.getInstance("SHA256withECDSA");
dsa.initSign(privateKey);
dsa.update(content);
byte[] signature = dsa.sign();
签名字节数组有以下内容:
[48, 68, 2, 32, 11, 25, 119, -64, -107, 53, -84, 65, -18, -81, -56, 34,
11, 29, 120, 38, -102, 105, -89, -9, -46, -28, 91, 59, -74, -103, -53,
117, 81, -37, 85, 27, 2, 32, 55, 97, -11, -85, 110, -106, 81, -94, 7,
112, 125, -29, -16, -8, 121, 123, 14, -17, -7, -10, 1, -80, -117, 86,
98, -13, -47, -51, 58, -15, -48, 10]
我想了解签名数组的内容是什么。根据 ECDSA 维基百科页面,签名是计算的值 (r, s),但在我看来,该数组中还有更多。签名总是以字节开头
48, 68, 2, 32
这似乎是某种标题。是否有解释该数组格式的规范?具体来说,我想获取 r 和 s 值。
谢谢。
【问题讨论】:
标签: java cryptography bouncycastle ecdsa