2

内容が次の構造を持つ RSA pubkey.dat (それが何であるかはほとんど明らかです) を取得しました。

  • ASN1 約 1024 ビットの整数 (モジュラス)
  • ASN1 整数 (指数)
  • 256 バイトのブロブ (署名)

「----begin---」などのタグはありません。その中の純粋な16進値。

DER/PEM/etc のようにフォーマットを識別する方法はありますか?

(または、私がチェックする公開標準構造名と一致する場合)

M2cryptがロードできないため、PEMではないようです。

前もって感謝します。

4

1 に答える 1

3

PEMエンコーディングには必須の形式があります。

-----BEGIN typeName-----
base64 of DER value
-----END typeName-----

ここで、公開鍵の場合、typeName = "PUBLIC KEY"(AFAIR)であるため、次のような正規表現で非常に簡単に確認できます。

/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----/

PEMでない場合は、通常、プレーンDERです。

ASN.1 SEQUENCEのDER表現は常に0x30で始まるため、通常、それがASN.1 SEQUENCEであることが確実にわかっているDERまたはPEMストリームをデコードする必要がある場合(とにかく、最も複雑な値はSEQUENCESです)最初のバイト:0x30の場合は、DERとしてデコードし、それ以外の場合はPEMとしてデコードします。

私自身のオープンソースASN.1パーサーを使用してASN.1データをすばやく確認できます(これはすべてクライアント側のJavascriptであるため、データは表示されません)。

于 2009-09-01T12:16:16.183 に答える