[解決済み] BEGIN RSA PUBLIC KEY」と「BEGIN PUBLIC KEY」の2種類の公開鍵形式がありますが、どのように変換すればよいのでしょうか?
2022-06-29 08:36:20
質問
公開鍵の形式は2種類ありますが、どのように変換すればよいのでしょうか。 1つのフォーマットは
-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
という形式であれば、もう一方の形式は
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
例えば、私は ssh-keygen コマンドを使用して id_rsa/id_rsa.pub のペアを生成しました。 id_rsaから公開鍵を計算しました。
openssl rsa -in id_rsa -pubout -out pub2
で、再度id_rsa.pubから公開鍵を計算しました。
ssh-keygen -f id_rsa.pub -e -m pem > pub1
は、pub1 のコンテンツです。
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA61BjmfXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----
で、pub2 の内容は:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
+rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
ZQIDAQAB
-----END PUBLIC KEY-----
私の理解では、pub1とpub2は同じ公開鍵情報を含んでいますが、異なるフォーマットになっています。誰かが私に塔の形式に関するいくつかの簡潔な紹介を示すことができますか?
どのように解決するのですか?
使用方法 phpseclib, PHP による純粋な RSA 実装 ...
<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->loadKey('-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
+rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
ZQIDAQAB
-----END PUBLIC KEY-----');
$rsa->setPublicKey();
echo $rsa->getPublicKey(CRYPT_RSA_PUBLIC_FORMAT_PKCS1_RAW);
ヘッダにBEGIN PUBLIC KEYとあってBEGIN RSA PUBLIC KEYでないにもかかわらず、base64エンコードされたものはマッチしているように見えます。そのため、str_replaceを使用して修正すれば、問題ないでしょう。
関連
-
[解決済み】OpenSSLを使用して「unable to write 'random state'」とはどういう意味ですか?
-
[解決済み] OpenSSLを使用して「unable to write 'random state'」とはどういう意味ですか?
-
[解決済み] OpenSSLのCMAC_xxx関数を使ってAESのCMACを計算する方法は?
-
[解決済み] プロキシを使用した openssl s_client
-
[解決済み] opensslを使用してpfxをpemに変換する
-
[解決済み] BEGIN RSA PRIVATE KEY」と「BEGIN PRIVATE KEY」の違いについて。
-
[解決済み] 自作ソフトでよくあるエラー。"不明なコマンド: switch"
-
[解決済み】"BEGIN RSA PRIVATE KEY" と "BEGIN PRIVATE KEY" の違いについて
-
[解決済み] pem 鍵を ssh-rsa 形式に変換する
-
[解決済み] BEGIN RSA PUBLIC KEY」と「BEGIN PUBLIC KEY」の2種類の公開鍵形式がありますが、どのように変換すればよいのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] OpenSSLを使用して「unable to write 'random state'」とはどういう意味ですか?
-
[解決済み] プロキシを使用した openssl s_client
-
[解決済み] opensslを使用してpfxをpemに変換する
-
[解決済み] BEGIN RSA PRIVATE KEY」と「BEGIN PRIVATE KEY」の違いについて。
-
[解決済み] 自作ソフトでよくあるエラー。"不明なコマンド: switch"
-
[解決済み] RSA秘密鍵を使って公開鍵を生成する?
-
[解決済み】"BEGIN RSA PRIVATE KEY" と "BEGIN PRIVATE KEY" の違いについて
-
[解決済み] pem 鍵を ssh-rsa 形式に変換する
-
[解決済み] OpenSSLで公開鍵を取り出すには?
-
[解決済み] BEGIN RSA PUBLIC KEY」と「BEGIN PUBLIC KEY」の2種類の公開鍵形式がありますが、どのように変換すればよいのでしょうか?