为了执行非对称加密,Common的Lisp Ironclad库需要使用指数和模数初始化密钥。鉴于我可能不想自己生成密钥,所以我站在OpenSSL巨头的肩膀上进行密钥生成
ssh-keygen -t rsa -C "foo@bar.com"
检查fils生成的文件我发现它是PEM格式的。
file ~/.id_rsa
=> ~/.ssh/id_rsa: PEM RSA private key
根据其他一些SO问题,我得到了这个
openssl asn1parse -i -in ~/.ssh/id_rsa
0:d=0 hl=4 l=1187 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=4 l= 257 prim: INTEGER :BBFB9E...
268:d=1 hl=2 l= 3 prim: INTEGER :010001
273:d=1 hl=4 l= 256 prim: INTEGER :769BE9...
533:d=1 hl=3 l= 129 prim: INTEGER :ECCB14004...
665:d=1 hl=3 l= 129 prim: INTEGER :CB3B02...
797:d=1 hl=3 l= 128 prim: INTEGER :78054EF...
928:d=1 hl=3 l= 128 prim: INTEGER :0D474BC43....
1059:d=1 hl=3 l= 129 prim: INTEGER :D71D75FF....
现在有些帖子说要添加选项-strparse 19(其他18)以获得指数和模数。这就是我在以下几行中收到错误的地方:
openssl asn1parse -i -in ~/.ssh/id_rsa -strparse 19
Error parsing structure
140334635108032:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:asn1_lib.c:142:
140334635108032:error:0D068066:asn1 encoding routines:ASN1_CHECK_TLEN:bad object header:tasn_dec.c:1306:
140334635108032:error:0D06A03A:asn1 encoding routines:ASN1_COLLECT:nested asn1 error:tasn_dec.c:1190:
因此可能是PEM不是asn1parse格式。我也试过-inform DER。所以问题是我如何从生成密钥到从PEM证书中获得模数和指数。
答案 0 :(得分:1)
也许这有用吗?
% openssl rsa -text -noout < id_rsa
Private-Key: (2048 bit)
modulus:
00:ad:03: ...
...
publicExponent: 35 (0x23)
privateExponent:
94:12:aa: ...