RSA Public Key format
在哪里可以找到有关RSA公钥格式的文档?
用
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L
格式化用于安全Shell的相同公共密钥(RFC 4716-安全Shell(SSH)公共密钥文件格式):
1 2 3 4 5 6 7 8 | ---- BEGIN SSH2 PUBLIC KEY ---- AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYs c8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS 0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7r NzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaX fgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQ LGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L ---- END SSH2 PUBLIC KEY ---- |
格式与RSA公钥相同的公钥(请注意五个
1 2 3 4 5 6 7 8 | -----BEGIN RSA PUBLIC KEY----- MIIBCgKCAQEA+xGZ/wcz9ugFpP07Nspo6U17l0YhFiFpxxU4pTk3Lifz9R3zsIsu ERwta7+fWIfxOo208ett/jhskiVodSEt3QBGh4XBipyWopKwZ93HHaDVZAALi/2A +xTBtWdEo7XGUujKDvC2/aZKukfjpOiUI8AhLAfjmlcD/UZ1QPh0mHsglRNCmpCw mwSXA9VNmhz+PiB+Dml4WWnKW/VHo2ujTXxq7+efMU4H2fny3Se3KYOsFPFGZ1TN QSYlFuShWrHPtiLmUdPoP6CV2mML1tk+l7DIIqXrQhLUKDACeM5roMx0kLhUWB8P +0uj1CNlNN4JRZlC7xFfqiMbFRU9Z4N6YwIDAQAB -----END RSA PUBLIC KEY----- |
base-64编码数据的十六进制转储:
1 2 3 4 5 6 7 8 9 10 11 12 | 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 01 25 00 00 01 00 7f 9c 09 8e 8d 39 9e cc d5 03 29 8b c4 78 84 5f d9 89 f0 33 df ee 50 6d 5d d0 16 2c 73 cf ed 46 dc 7e 44 68 bb 37 69 54 6e 9e f6 f0 c5 c6 c1 d9 cb f6 87 78 70 8b 73 93 2f f3 55 d2 d9 13 67 32 70 e6 b5 f3 10 4a f5 c3 96 99 c2 92 d0 0f 05 60 1c 44 41 62 7f ab d6 15 52 06 5b 14 a7 d8 19 a1 90 c6 c1 11 f8 0d 30 fd f5 fc 00 bb a4 ef c9 2d 3f 7d 4a eb d2 dc 42 0c 48 b2 5e eb 37 3c 6c a0 e4 0a 27 f0 88 c4 e1 8c 33 17 33 61 38 84 a0 bb d0 85 aa 45 40 cb 37 14 bf 7a 76 27 4a af f4 1b ad f0 75 59 3e ac df cd fc 48 46 97 7e 06 6f 2d e7 f5 60 1d b1 99 f8 5b 4f d3 97 14 4d c5 5e f8 76 50 f0 5f 37 e7 df 13 b8 a2 6b 24 1f ff 65 d1 fb c8 f8 37 86 d6 df 40 e2 3e d3 90 2c 65 2b 1f 5c b9 5f fa e9 35 93 65 59 6d be 8c 62 31 a9 9b 60 5a 0e e5 4f 2d e6 5f 2e 71 f3 7e 92 8f fe 8b |
我读过有几种格式?
Key data may be encoded in three general ways:
- Binary DER-encoded format. This is sometimes called ASN.1 BER-encoded
- PEM or base64 format. This is the same data as the DER-encoded file but it is encoded in base64 with additional header and footer lines
- XML format.
如果是ASN.1,则十六进制肯定看起来不像它。
RSA公钥的格式是什么?
也可以看看
- RSA密钥格式
- 抽象语法符号一
- 将Base64公钥转换为XML签名?
- 解码PEM格式
您不能只是将定界符从
本文对这两种格式都有很好的解释。
编辑:编辑后,您可以使用
' | base64 -d | openssl asn1parse -inform DER
1 2 3 | 0:d=0 hl=4 l= 266 cons: SEQUENCE 4:d=1 hl=4 l= 257 prim: INTEGER :FB1199FF0733F6E805A4FD3B36CA68E94D7B974621162169C71538A539372E27F3F51DF3B08B2E111C2D6BBF9F5887F13A8DB4F1EB6DFE386C92256875212DDD00468785C18A9C96A292B067DDC71DA0D564000B8BFD80FB14C1B56744A3B5C652E8CA0EF0B6FDA64ABA47E3A4E89423C0212C07E39A5703FD467540F874987B209513429A90B09B049703D54D9A1CFE3E207E0E69785969CA5BF547A36BA34D7C6AEFE79F314E07D9F9F2DD27B72983AC14F1466754CD41262516E4A15AB1CFB622E651D3E83FA095DA630BD6D93E97B0C822A5EB4212D428300278CE6BA0CC7490B854581F0FFB4BA3D4236534DE09459942EF115FAA231B15153D67837A63 265:d=1 hl=2 l= 3 prim: INTEGER :010001 |
要解码SSH密钥格式,您还需要结合RFC 4253使用RFC 4251中的数据格式规范:
1
2
3
4
5 The"ssh-rsa" key format has the following specific encoding:
string "ssh-rsa"
mpint e
mpint n
例如,在一开始,您会得到
从OpenSSL rsa-ssh密钥的已解码base64数据开始,我已经能够猜出一种格式:
-
00 00 00 07 :四个字节长度的前缀(7个字节) -
73 73 68 2d 72 73 61 :" ssh-rsa" -
00 00 00 01 :四字节长的前缀(1字节) -
25 :RSA指数(e ):25 -
00 00 01 00 :四字节长度的前缀(256字节) -
RSA模量(
n ):1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
167f 9c 09 8e 8d 39 9e cc d5 03 29 8b c4 78 84 5f
d9 89 f0 33 df ee 50 6d 5d d0 16 2c 73 cf ed 46
dc 7e 44 68 bb 37 69 54 6e 9e f6 f0 c5 c6 c1 d9
cb f6 87 78 70 8b 73 93 2f f3 55 d2 d9 13 67 32
70 e6 b5 f3 10 4a f5 c3 96 99 c2 92 d0 0f 05 60
1c 44 41 62 7f ab d6 15 52 06 5b 14 a7 d8 19 a1
90 c6 c1 11 f8 0d 30 fd f5 fc 00 bb a4 ef c9 2d
3f 7d 4a eb d2 dc 42 0c 48 b2 5e eb 37 3c 6c a0
e4 0a 27 f0 88 c4 e1 8c 33 17 33 61 38 84 a0 bb
d0 85 aa 45 40 cb 37 14 bf 7a 76 27 4a af f4 1b
ad f0 75 59 3e ac df cd fc 48 46 97 7e 06 6f 2d
e7 f5 60 1d b1 99 f8 5b 4f d3 97 14 4d c5 5e f8
76 50 f0 5f 37 e7 df 13 b8 a2 6b 24 1f ff 65 d1
fb c8 f8 37 86 d6 df 40 e2 3e d3 90 2c 65 2b 1f
5c b9 5f fa e9 35 93 65 59 6d be 8c 62 31 a9 9b
60 5a 0e e5 4f 2d e6 5f 2e 71 f3 7e 92 8f fe 8b
我的理论的最接近的验证我可以从RFC 4253中找到它:
The"ssh-rsa" key format has the following specific encoding:
1
2
3 string "ssh-rsa"
mpint e
mpint nHere the 'e' and 'n' parameters form the signature key blob.
但是它没有解释长度前缀。
以我发现的随机
1 2 3 4 5 6 7 8 9 10 11 12 | 30 82 01 0a 02 82 01 01 00 fb 11 99 ff 07 33 f6 e8 05 a4 fd 3b 36 ca 68 e9 4d 7b 97 46 21 16 21 69 c7 15 38 a5 39 37 2e 27 f3 f5 1d f3 b0 8b 2e 11 1c 2d 6b bf 9f 58 87 f1 3a 8d b4 f1 eb 6d fe 38 6c 92 25 68 75 21 2d dd 00 46 87 85 c1 8a 9c 96 a2 92 b0 67 dd c7 1d a0 d5 64 00 0b 8b fd 80 fb 14 c1 b5 67 44 a3 b5 c6 52 e8 ca 0e f0 b6 fd a6 4a ba 47 e3 a4 e8 94 23 c0 21 2c 07 e3 9a 57 03 fd 46 75 40 f8 74 98 7b 20 95 13 42 9a 90 b0 9b 04 97 03 d5 4d 9a 1c fe 3e 20 7e 0e 69 78 59 69 ca 5b f5 47 a3 6b a3 4d 7c 6a ef e7 9f 31 4e 07 d9 f9 f2 dd 27 b7 29 83 ac 14 f1 46 67 54 cd 41 26 25 16 e4 a1 5a b1 cf b6 22 e6 51 d3 e8 3f a0 95 da 63 0b d6 d9 3e 97 b0 c8 22 a5 eb 42 12 d4 28 30 02 78 ce 6b a0 cc 74 90 b8 54 58 1f 0f fb 4b a3 d4 23 65 34 de 09 45 99 42 ef 11 5f aa 23 1b 15 15 3d 67 83 7a 63 02 03 01 00 01 |
从RFC3447-公钥密码标准(PKCS)#1:RSA密码规范2.1版:
A.1.1 RSA public key syntax
An RSA public key should be represented with the ASN.1 type
RSAPublicKey :
1
2
3
4 RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}The fields of type RSAPublicKey have the following meanings:
- modulus is the RSA modulus n.
- publicExponent is the RSA public exponent e.
使用Microsoft优秀的(也是唯一的)ASN.1文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 30 82 01 0a ;SEQUENCE (0x010A bytes: 266 bytes) | 02 82 01 01 ;INTEGER (0x0101 bytes: 257 bytes) | | 00 ;leading zero because high-bit, but number is positive | | fb 11 99 ff 07 33 f6 e8 05 a4 fd 3b 36 ca 68 | | e9 4d 7b 97 46 21 16 21 69 c7 15 38 a5 39 37 2e 27 f3 f5 1d f3 b0 8b 2e | | 11 1c 2d 6b bf 9f 58 87 f1 3a 8d b4 f1 eb 6d fe 38 6c 92 25 68 75 21 2d | | dd 00 46 87 85 c1 8a 9c 96 a2 92 b0 67 dd c7 1d a0 d5 64 00 0b 8b fd 80 | | fb 14 c1 b5 67 44 a3 b5 c6 52 e8 ca 0e f0 b6 fd a6 4a ba 47 e3 a4 e8 94 | | 23 c0 21 2c 07 e3 9a 57 03 fd 46 75 40 f8 74 98 7b 20 95 13 42 9a 90 b0 | | 9b 04 97 03 d5 4d 9a 1c fe 3e 20 7e 0e 69 78 59 69 ca 5b f5 47 a3 6b a3 | | 4d 7c 6a ef e7 9f 31 4e 07 d9 f9 f2 dd 27 b7 29 83 ac 14 f1 46 67 54 cd | | 41 26 25 16 e4 a1 5a b1 cf b6 22 e6 51 d3 e8 3f a0 95 da 63 0b d6 d9 3e | | 97 b0 c8 22 a5 eb 42 12 d4 28 30 02 78 ce 6b a0 cc 74 90 b8 54 58 1f 0f | | fb 4b a3 d4 23 65 34 de 09 45 99 42 ef 11 5f aa 23 1b 15 15 3d 67 83 7a | | 63 | 02 03 ;INTEGER (3 bytes) | 01 00 01 |
给出公钥模数和指数:
-
模量=
0xfb1199ff0733f6e805a4fd3b36ca68...837a63 - 指数= 65,537
更新:我在另一个问题中对此答案的扩展形式
CRL,CRT,CSR,NEW CSR,PRIVATE KEY,PUBLIC KEY,RSA,RSA公钥解析器的参考解码器
RSA公钥
1 2 | -----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY----- |
加密私钥
1 2 3 | -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED -----END RSA PRIVATE KEY----- |
CRL
1 2 | -----BEGIN X509 CRL----- -----END X509 CRL----- |
CRT
1 2 | -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- |
企业社会责任
1 2 | -----BEGIN CERTIFICATE REQUEST----- -----END CERTIFICATE REQUEST----- |
新企业社会责任
1 2 | -----BEGIN NEW CERTIFICATE REQUEST----- -----END NEW CERTIFICATE REQUEST----- |
PEM
1 2 | -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- |
PKCS7
1 2 | -----BEGIN PKCS7----- -----END PKCS7----- |
私钥
1 2 | -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- |
DSA密钥
1 2 | -----BEGIN DSA PRIVATE KEY----- -----END DSA PRIVATE KEY----- |
椭圆曲线
1 2 | -----BEGIN EC PRIVATE KEY----- -----END EC PRIVATE KEY----- |
PGP私钥
1 2 | -----BEGIN PGP PRIVATE KEY BLOCK----- -----END PGP PRIVATE KEY BLOCK----- |
PGP公钥
1 2 | -----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK----- |