將 EC 公鑰從 SubjectPublicKeyInfo 形式轉換為“傳統”形式
希望我的條款是正確的。
我目前有一個 EC 公鑰,格式為
-----BEGIN PUBLIC KEY----- xxxxx -----END PUBLIC KEY-----
我理解的是
SubjectPublicKeyInfo
表格。我想把它轉換成表格-----BEGIN EC PUBLIC KEY----- xxxxx -----END EC PUBLIC KEY-----
使用類似
openssl
或類似的命令。我似乎找不到RSAPublicKey_{in|out}
該命令的openssl ec
命令。我希望能夠以DER
和PEM
形式轉換公鑰。有沒有其他方法可以做到這一點?
OpenSSL 不支持任何“BEGIN EC PUBLIC KEY”格式並且(AFAIK)不存在這種格式。RSA 有一個“傳統”的公鑰格式(“BEGIN RSA PUBLIC KEY”),它本質上是一個 PEM 編碼的 PKCS#1 結構。後來的標准定義瞭如何以與算法無關的方式(SubjectPublicKeyInfo)對公鑰進行編碼,因此並不總是存在“傳統”格式版本。
您可以通過查看 openssl pem 標頭檔 (include/openssl/pem.h) 來檢查已知的 OpenSSL PEM 類型。您會注意到沒有“EC PUBLIC KEY”條目。有一個“RSA PUBLIC KEY”、“DSA PUBLIC KEY”和“ECDSA PUBLIC KEY”,但後兩者在 OpenSSL 程式碼庫中的任何地方都沒有使用(即它們只存在於標頭檔中)。
私鑰有“傳統”格式。要將 PKCS8 私鑰轉換為傳統形式,請使用:
openssl ec -in p8file.pem -out tradfile.pem
ec 命令還可以辨識“-inform DER”和“-outform DER”選項。因此,例如,要將 DER PKCS8 私鑰文件轉換為 PEM 傳統格式,您可以使用:
openssl ec -inform DER -in p8file.der -out tradfile.pem
或者將 PEM PKCS8 私鑰文件轉換為 DER 傳統用途:
openssl ec -in p8file.pem -outform DER -out tradfile.der
您也可以採用另一種方式,即傳統形式的 PKCS8 私鑰:
openssl pkcs8 -topk8 -nocrypt -in tradfile.pem -out p8file.pem
上面的 pkcs8 命令也可以辨識 -inform 和 -outform 選項。