如何从PEM获得指数和模数

时间:2014-03-28 19:25:47

标签: security openssl rsa common-lisp ironclad

为了执行非对称加密,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证书中获得模数和指数。

1 个答案:

答案 0 :(得分:1)

也许这有用吗?

% openssl rsa -text -noout < id_rsa
Private-Key: (2048 bit)
modulus:
00:ad:03: ...
...
publicExponent: 35 (0x23)
privateExponent:
94:12:aa: ...