0

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

4

1 回答 1

1

也许这行得通?

% openssl rsa -text -noout < id_rsa
Private-Key: (2048 bit)
modulus:
00:ad:03: ...
...
publicExponent: 35 (0x23)
privateExponent:
94:12:aa: ...
于 2014-03-28T20:16:19.957 回答