在之前的開發項目中遇到了 RSA 加密,也有人私下問我,爲什麼他們的項目中安卓客戶端上傳的密文可以通過後臺密鑰進行解密,但是iOS端上傳的密文卻解密失敗。在兩個平臺上,其實是不同的:
openssl genrsa -out private_key.pem 1024
openssl req -new -key private_key.pem -out rsaCertReq.csr
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
openssl x509 -outform der -in rsaCert.crt -out public_key.der // Create public_key.der For IOS
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt // Create private_key.p12 For IOS. 這一步,請記住你輸入的密碼,IOS代碼裏會用到
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout // Create rsa_public_key.pem For Java
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt // Create pkcs8_private_key.pem For Java
在後臺生成密鑰的過程中大致有上面七個步驟,而我要說的是上面七個步驟,總共生成7個文件。其中 public_key.der 和 private_key.p12 這對公鑰私鑰是給IOS用的, rsa_public_key.pem 和 pkcs8_private_key.pem 是給JAVA用的。
而它們的源都來自一個私鑰: private_key.pem
所以說如果小夥伴們發生了我上面說得問題,記得和後臺溝通一下,看看那邊的私鑰是不是使用錯誤。