- 密鑰對
根據RSA的加密機制(自行查找RSA工作原理),通常可以私鑰加密-公鑰解密(多用於簽名),公鑰加密-私鑰解密(多用於數據傳輸加密),私鑰可以生成公鑰。 - 密鑰對生成
生成私鑰,長度為2048,默認格式為PKCS1,即,頭部和尾部有RSA字樣
openssl genrsa -out rsa_private_key.pem 2048
生成對應公鑰
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key_2048.pem
公鑰格式通常不表,我查看了很多資料都不說這個,但是可以發現這樣生成的公鑰頭部沒有RSA,所以應該為PKCS8格式
- 密鑰轉換,PKCS1 -> PKCS8
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out private_pkcs8.pem
- C++
rsa加密的public key格式有多種,常見的有兩種,一種密鑰頭為‘-----BEGIN RSA PUBLIC KEY-----’,一種開頭為‘-----BEGIN PUBLIC KEY-----’,二者分別對應rsa的PKCS#1和PKCS#8格式。
使用openssl庫加載rsa的公鑰時,使用的函數也不同。以字符串公鑰為例,對PKCS#1格式的密鑰加載使用PEM_read_bio_RSAPublicKey()函數,對PKCS#8格式公鑰的加載使用PEM_read_bio_RSA_PUBKEY()函數。
---摘抄自下面第二個鏈接,這個說出了關鍵點。公鑰要區分格式讀取,私鑰不用。