2017-02-21 39 views
0

我有一個RSA公鑰是如下:如何轉換生成的OpenSSL的公鑰PEM格式一個java

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelri 
LEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCu 
b3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB 

我需要將其轉換成PEM格式,這樣我可以寫我的自己的Python代碼使用這個公鑰,我看到有相反的操作有很多答案,但現在我需要將它從JAVA風格轉換爲PEM,任何人都可以幫忙嗎?

+0

你是如何生成的關鍵? Java有幾種可以代表它們的方法 – Magnus

+0

你認爲你需要什麼python包來使用特定格式的密鑰? –

+0

oliv's solution works,but thank you all the same:P –

回答

1

只是轉換回編碼酒館關鍵的Base64和扔給OpenSSL:已

echo "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | base64 -d | openssl rsa -inform der -pubin -out rsakey.pub 

-inform der告訴OpenSSL的,對主要的二進制文件(默認爲PEM)

-pubin告訴期望公共(默認爲private)

-out是編寫的關鍵


另一種方法是前後Base64編碼RSA公共密鑰後OpenSSL的標籤附加:

sed 's/^/-----BEGIN PUBLIC KEY-----\n/;s/$/\n-----END PUBLIC KEY-----/' <<< "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHn/hfvTLRXViBXTmBhNYEIJeGGGDkmrYBxCRelriLEYEcrwWrzp0au9nEISpjMlXeEW4+T82bCM22+JUXZpIga5qdBrPkjU08Ktf5n7Nsd7n9ZeI0YoAKCub3ulVExcxGeS3RVxFai9ozERlavpoTOdUzEH6YWHP4reFfpMpLzwIDAQAB" | openssl rsa -pubin 
+0

好的解釋! – CraigR8806

+0

適合我,謝謝! –

1

你可以這樣創建一個bash腳本:

#!/bin/bash 

# Loop through all the certs in the current folder that have the .cer extension 
for cert in *.cer 
do 

#get filename wihtout ext 
filename="${cert%.*}" 
#echo ${filename} 

#convert to PEM 
openssl x509 -inform der -in ${cert} -outform pem -out ${filename}.crt 

done 

我用這個證書轉換爲PEM格式。希望它可以幫助

+0

嗨Craig,感謝您的快速回答,但是我發佈的密鑰不是DER,而是由JAVA生成的,openssl x509 -inform der -in $ {證書},我剛收到以下錯誤: –

+0

無法加載證書 140258637911704:錯誤:0D0680A8:ASN1編碼程序:ASN1_CHECK_TLEN:錯標籤:tasn_dec.c:1197: 140258637911704:錯誤:0D07803A:ASN1編碼程序:ASN1_ITEM_EX_D2I:嵌套asn1錯誤:tasn_dec.c:374:Type = X509 –

+0

該文件的擴展名是什麼? – CraigR8806

相關問題