從rsa私鑰字符串變成pfx文件


 
         

近日,從合作方拿到一個rsa的字符串私鑰,但是程序中需要使用pfx格式的文件,
所以需要轉化格式,通過咨詢,合作方是通過如下方法得到私鑰的:
private JSONObject RsaKeyGet() throws Exception{
JSONObject obj = new JSONObject();
Map<String, Object> keyMap = RSAUtils.genKeyPair();
String publicKey = RSAUtils.getPublicKey(keyMap);
String privateKey = RSAUtils.getPrivateKey(keyMap);
obj.put("publicKey", publicKey);
obj.put("privateKey", privateKey);
return obj;

}
————————————————————————————————
public static Map<String, Object> genKeyPair() throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(1024);
KeyPair keyPair = keyPairGen.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
Map<String, Object> keyMap = new HashMap<String, Object>(2);
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
}
——————————————————————————————————
我們的做法如下:

 
         

1.將字符串修改成openssl所需格式
private static final String PRIVATE_KEY="MIICdwIBA。。。3DP4=";

 
         

我們是通過 openssl genrsa -out my.key 1024 命令觀察輸入的格式是怎么樣的,如下
openssl genrsa -out my.key 1024
[root@redis3 tmp]# cat my.key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCZJEBcW0vcZ0NRKpDIb0nXe1bJ+DeJfHAlnVQAraQxBih8rTKQ
pfoPacBhmtE/jono/iM9ebKvBYGOodjWlTHHpU0Cc9V4KLoYLVY5RmMUZGB+uMWL
XUYRVzuSZJGi11x5Bcxy+eic0tdKynaZoKtcKQeRpMgGynDsdGsTuAev9wIDAQAB
AoGAT/U3jYE1iKx532UkFyLUISgK1oU9KhHI1Dri4z/GXLpkZURhBFlEyMtkYRHe
cxrPMtGOQMjL3Mo5LOmgN9nKFS6LjeWBgNM9esOaeEuLMBO5ej8mCQ7A+ohoeIgY
J2SyZavmS64g4Q5Y3LVqOjnIUKDUThAh4qbw61z950BTDJECQQDLEYBsYrqqlcWX
xQl0jadZfa+hX2acEybAT2UWx2eKjrtdcapGUFq05a/HvHsKdHtHoySVXisb7JbC
bQzNuo3LAkEAwQ8zE7URdXnhXfDcOM/oUJ3JDoJJhw2HijJUtj2hFg5ZC4OPnW43
+lkBkG76gt0CHpGMIoWA8Mpu/4kTRdthBQJAXa8eW2KVEbv1I9awTQhJC51TmJRl
x12ChDhcv8yQ9ThyMmMNFlFd95T7qp9G+ITSlzMp3otKQiC9UMd0n7kQTwJBAKdh
ejM35W8owJAl54kKGKzsYAjIRN9mh4D1qiRmwmbRAbrN0ZH4oWfYC1ciIOecnd3K
6uhzPxuFJz89pQwH69ECQQC32YsAcogYw5Ue5ViJfYHiW0yJ5iLm6rF2a8YPAQyD
GSZXcY64gOuw0VdrDHj+09FEe0OfaJSp3iIRkw2gDt4o
-----END RSA PRIVATE KEY-----
每行64個base64編碼的字符,最后剩余的成一行
前面用-----BEGIN RSA PRIVATE KEY-----開頭
后面用-----END RSA PRIVATE KEY-----結尾

 
         

保存成文件ssl.key

 
         

2.然后使用key文件生成證書請求文件
openssl req -new -key ssl.key -out ssl.csr

 
         

3生成crt證書文件,這里需要填寫相應信息,國家 地區 城市 公司 部門 個人 等信息,密碼可以不填寫
openssl x509 -req -days 3650 -in ssl.csr -signkey ssl.key -out ssl.crt

4生成我們需要的pfx文件,這里輸入密碼,保護安全
openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx

 
         


驗證:反向提取rsa私鑰

 
         

1.獲取pem格式明文信息
openssl pkcs12 -in ssl.pfx -nodes -out ssl.pem

 
         

2.提取私鑰
openssl rsa -in ssl.pem -out ssl.key

 
         

3.按照pkcs8模式補足,輸出的明文就是我們的私鑰
openssl pkcs8 -topk8 -inform PEM -in ssl.key -outform PEM -nocrypt

 
         

只要保證剛開始的秘鑰和最后得到的秘鑰是同一個,基本就沒有錯了!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM