[解決済み] RSA公開鍵形式
質問
RSA公開鍵のフォーマットに関する資料はどこにありますか?
RSA公開鍵の書式は
OpenSSH
:
シュッ RSA AAAAB3NzaC1yc2EAAAABJQAAAQB/nAmOjTmezNUDKYvEeIRf2YnwM9/uUG1d0BYsc8/tRtx+RGi7N2lUbp728MXGwdnL9od4cItzky/zVdLZE2cycOa18xBK9cOWmcKS0A8FYBxEQWJ/q9YVUgZbFKfYGaGQxsER+A0w/fX8ALuk78ktP31K69LcQgxIsl7rNzxsoOQKJ/CIxOGMMxczYTiEoLvQhapFQMs3FL96didKr/QbrfB1WT6s3838SEaXfgZvLef1YB2xmfhbT9OXFE3FXvh2UPBfN+ffE7iiayQf/2XR+8j4N4bW30DiPtOQLGUrH1y5X/rpNZNlWW2+jGIxqZtgWg7lTy3mXy5x836Sj/6L
同じ公開鍵をSecure Shellで使用するためにフォーマットしたものです。 (RFC 4716 - Secure Shell (SSH) 公開鍵ファイル形式) :
---- 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公開鍵としてフォーマットしたもの(
ファイブ
-
であり、スペースはない)。
-----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でエンコードされたデータの16進ダンプです。
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
私は いくつかの形式があることを読み取る ???? :
鍵データの符号化には、一般に3つの方法がある。
- バイナリDERエンコード形式。これはASN.1 BER-encodedと呼ばれることもある。
- PEMまたはbase64形式。これはDERでエンコードされたファイルと同じデータですが、base64でエンコードされ、ヘッダーとフッターの行が追加されています。
- XML形式。
もし、それが ASN.1 しかし、16進数ではそうは見えません。
RSA公開鍵の形式は?
こちらもご覧ください
解決方法は?
区切り文字を
---- BEGIN SSH2 PUBLIC KEY ----
から
-----BEGIN RSA PUBLIC KEY-----
で、あるフォーマットから別のフォーマットへの変換で十分であることを期待します(あなたの例ではそうしています)。
この記事 は、両方のフォーマットについて良い説明をしています。
で得られるもの
RSA PUBLIC KEY
の方が近い内容になっています。
PUBLIC KEY
という事実を反映させるために、ASN.1構造の先頭をオフセットする必要があります。
PUBLIC KEY
は、それがどのタイプのキーであるかを示すインジケータも持っています (
RFC 3447
). これを見るには
openssl asn1parse
と
-strparse 19
で説明されているように
この回答
.
EDIT
: 編集後、あなたの
RSA PUBLIC KEY
を使用した構造体です。
grep -v -- ----- | tr -d '\n' | base64 -d | openssl asn1parse -inform DER
:
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 4251 も、RFC4253と併用してください。
The "ssh-rsa" key format has the following specific encoding: string "ssh-rsa" mpint e mpint n
例えば、冒頭で
00 00 00 07 73 73 68 2d 72 73 61
. 最初の4バイト(
00 00 00 07
) で長さがわかります。残りは文字列そのものです:73=s, 68=h, ... ->
73 73 68 2d 72 73 61
=
ssh-rsa
の後に、長さ1の指数が続く(
00 00 00 01 25
) と長さ256のモジュラス (
00 00 01 00 7f ...
).
関連
-
[解決済み] JWTで使用するHS512秘密鍵の生成方法
-
[解決済み] 暗号化/パスワード保護機能付きSQLite
-
[解決済み] エンコードと暗号化の違い
-
[解決済み] SSH公開鍵にアクセスするにはどうすればよいですか?
-
[解決済み] AES暗号化モード(CBC ECB CTR OCB CFB)の選択方法は?
-
[解決済み] RSA秘密鍵を使って公開鍵を生成する?
-
[解決済み] 非対称暗号化における暗号化と署名の違いは何ですか?[クローズド]
-
[解決済み】RSA鍵のフィンガープリントを計算する
-
[解決済み] gnupg: このキーが指定されたユーザーに属している保証はありません。
-
[解決済み] 複数キーによる暗号化・復号化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSEncryptの理解
-
[解決済み] JWTで使用するHS512秘密鍵の生成方法
-
[解決済み] AES暗号化 - 鍵とIVの比較
-
[解決済み] RSA公開鍵形式
-
[解決済み] .pem、.cer、.derの違いは何ですか?
-
[解決済み] AES暗号化モード(CBC ECB CTR OCB CFB)の選択方法は?
-
[解決済み] 非対称暗号化における暗号化と署名の違いは何ですか?[クローズド]
-
[解決済み】OpenSSLを使用してファイルを暗号化/復号化する方法は?
-
[解決済み] 公開/非公開のDSAキーペアをどのようにテストするのですか?
-
[解決済み] 短いハッシュを生成するハッシュ関数?