openssl -- RSA秘鑰格式


1.PEM私鑰格式文件 pkcs1的格式於此相同     //PEM_read_RSAPrivateKey

-----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

2. PKCS8私鑰格式      //pkcs8 長度為861(包含回車),主要應用於java

-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY-----

2. PEM公鑰格式文件    //讀取公鑰PEM,PUBKEY格式PEM使用PEM_read_RSA_PUBKEY函數

-----BEGIN PUBLIC KEY----- -----END PUBLIC KEY-----

3. PEM RSAPublicKey公鑰格式文件   //PEM_read_RSAPublicKey

-----BEGIN RSA PUBLIC KEY----- -----END RSA PUBLIC KEY-----

示例:

Private Key:

    openssl genrsa -out mykey.pem 1024

Public Key afterwards:

    openssl rsa -in mykey.pem -pubout > somewhere.pub 

//以下read rsa_pub == NULL!

FILE *keyfile = fopen("somewhere.pub", "r");

RSA *rsa_pub = PEM_read_RSAPublicKey(keyfile, NULL, NULL, NULL);

//以下read all good

FILE *keyfile = fopen("mykey.pem", "r");

RSA *rsa_pri = PEM_read_RSAPrivateKey(keyfile, NULL, NULL, NULL);

由於OpenSSL的生成默認的公鑰文件格式是PEM格式

PEM_read_RSA_PUBKEY()讀取PEM格式PEM_read_RSAPublicKey()讀取PKCS# 1格式

所以,如果你想堅持到 PEM_read_RSAPublicKey(),你可以通過指定 -outform使用PKCS#1格式生成公鑰文件生成公鑰時DER 選項。

 

指令執行過程:

生成PEM格式私鑰

$ openssl genrsa -out id_rsa_private 1024    #  -out 指定生成文件,此文件包含公鑰和私鑰兩部分,所以即可以加密,也可以解密。 1024 生成密鑰的長度

生成私鑰(把RSA私鑰轉換成PKCS8格式)

$ openssl pkcs8 -topk8 -inform PEM -in id_rsa_private -outform pem -nocrypt -out id_rsa_private_pkcs

提取公鑰

openssl rsa -in id_rsa_private -pubout -out id_rsa_public.pub   # -in 指定輸入的密鑰文件 -out 指定提取生成公鑰的文件(PEM公鑰格式)

 提取PEM RSAPublicKey格式公鑰

$ openssl rsa -in id_rsa_private -RSAPublicKey_out -out id_rsa_public  # -in 指定輸入的密鑰文件  -out 指定提取生成公鑰的文件(PEM RSAPublicKey格式)

 

生成的秘鑰文件:

$ cat id_rsa_private 

$ cat id_rsa_private_pkcs

$ cat  id_rsa_public.pub

$ cat id_rsa_public

 

 

 

 

pkcs#8 參數參考鏈接:https://www.cnblogs.com/aixiaoxiaoyu/articles/8856312.html

PEM_read_RSAPublicKey(fp, NULL, NULL, NULL)


免責聲明!

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



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