openssl進行RSA加解密(C++)


  1. 密鑰對
    根據RSA的加密機制(自行查找RSA工作原理),通常可以私鑰加密-公鑰解密(多用於簽名),公鑰加密-私鑰解密(多用於數據傳輸加密),私鑰可以生成公鑰。
  2. 密鑰對生成
    生成私鑰,長度為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格式

  3. 密鑰轉換,PKCS1 -> PKCS8
    openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform pem -nocrypt -out private_pkcs8.pem
    查了一些資料一般也只是轉換私鑰的格式。
  4. 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()函數。

    ---摘抄自下面第二個鏈接,這個說出了關鍵點。公鑰要區分格式讀取,私鑰不用。

參考: https://www.jianshu.com/p/f18304b1b513

  https://blog.csdn.net/freesonWANG/article/details/87717361


免責聲明!

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



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