openssl key文件与字节码的关系
私钥Key文件内容如下
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEICAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/
-----END PRIVATE KEY-----
这个Key文件要表示的私钥是
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
这里MC4CAQAwBQYDK2VuBCIEICAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/是Base64编码解密成这样
302E020100300506032B656E04220420202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F
解密后发现他不只前面的私角,还有一些其它数据
302E020100300506032B656E04220420202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F
这是什么,经查是叫ASN.1编码
简单解析一下这个ASN.1编码
30表示ASN.1开始
2E表示剩余部分有2E个字节
02需要开始的是一个整数
01整数长度
00整数值
30表示开始的是一个Sequence
05Sequence长度
06032B656E 这里表示是1.3.101.110 curveX25519 (ECDH 25519 key agreement algorithm)
04 22 表示接下来是一个OCTET STRING 长度为22字节
04 20 表示接下来是一个OCTET STRING 长度为20字节
参考:
http://tools.ietf.org/html/rfc5915
http://luca.ntop.org/Teaching/Appunti/asn1.html
http://lapo.it/asn1js/#MC4CAQAwBQYDK2VuBCIEICAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4_
http://www.tomeko.net/online_tools/base64.php?lang=en
完