日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenSSL笔记-PKCS#1和PKCS#8的区别及分别调用的API

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenSSL笔记-PKCS#1和PKCS#8的区别及分别调用的API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這玩意折騰了一天,有個老外的代碼,公鑰用了PKCS#1,私鑰用了PKCS#8。調用了不同的API,而我的全是生成的PKCS#8,后面查閱了大量資料和長時間調試程序,才發現了問題,在此記錄下。

用OpenSSL生成的pem文件,公私密鑰有兩種格式

公鑰是(PKCS#1):

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

和(PKCS#8)

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

私鑰是(PKCS#1):

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

總結下:在OpenSSL1.1.x版本中公鑰有RSA的PKCS#8、PKCS#1,私鑰只有PKCS#8標準,他們的區別如下:

PKCS#1:是標準RSA密鑰對規范,但都是裸奔的;

PKCS#8:是對加密后的密鑰進行了描述,也就是說P8格式的密鑰不是裸奔的。

PKCS#1,調用的API:

//生成RSA對象的 PEM_read_bio_RSA_PUBKEY();

PKCS#8,調用的API:

//生成RSA對象的 PEM_read_bio_RSAPublicKey(); PEM_read_bio_RSAPrivateKey();

關于加解密都是調用相同的4個函數:

/* next 4 return -1 on error */ int RSA_public_encrypt(int flen, const unsigned char *from,unsigned char *to, RSA *rsa, int padding); int RSA_private_encrypt(int flen, const unsigned char *from,unsigned char *to, RSA *rsa, int padding); int RSA_public_decrypt(int flen, const unsigned char *from,unsigned char *to, RSA *rsa, int padding); int RSA_private_decrypt(int flen, const unsigned char *from,unsigned char *to, RSA *rsa, int padding);

有一點要提醒的,他們的返回值都是加密,解密后,數據的長度,因為是unsigned char類型,還是二進制的,所以這個返回值比較重要。

總結

以上是生活随笔為你收集整理的OpenSSL笔记-PKCS#1和PKCS#8的区别及分别调用的API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。