關於OPENSSL 實現 RSA加密幾個問題

2021-08-17 17:35:47 字數 2396 閱讀 3525

一. rsa pem檔案格式

1. pem私鑰格式檔案12

-----begin

rsa private key-----

-----end

rsa private key-----

2. pem公鑰格式檔案12

-----begin

public key-----

-----end

public key-----

3. pem rsapublickey公鑰格式檔案12

-----begin

rsa public key-----

-----end

rsa public key-----

二. openssl金鑰相關命令

1. 生成金鑰12

3openssl genrsa -out key.pem 1024

-out

指定生成檔案,此檔案包含公鑰和私鑰兩部分,所以即可以加密,也可以解密

1024

生成金鑰的長度

2. 提取pem格式公鑰12

3openssl

rsa -in key.pem -pubout -out pubkey.pem

-in

指定輸入的金鑰檔案

-out

指定提取生成公鑰的檔案(pem公鑰格式)

3. 提取pem rsapublickey格式公鑰12

3openssl

rsa -in key.pem -rsapublickey_out -out pubkey.pem

-in

指定輸入的金鑰檔案

-out

指定提取生成公鑰的檔案(pem rsapublickey格式)

4. 公鑰加密檔案12

345openssl

rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file

-in

指定被加密的檔案

-inkey

指定加密公鑰檔案

-pubin

表面是用純公鑰檔案加密

-out

指定加密後的檔案

5. 私鑰解密檔案12

34openssl

rsautl -decrypt -in input.file -inkey key.pem -out output.file

-in

指定需要解密的檔案

-inkey

指定私鑰檔案

-out

指定解密後的檔案

那麼問題來了:

問題一:pem_read_rsa_pubkey和pem_read_rsapublickey,大多數人都分不清區別,看上面分別是不同的功能,讀

不同格式的公鑰。所以不能混用,否則會執行失敗。

pem_read_rsa_pubkey 讀pem公鑰

pem_read_rsapublickey讀 rsapublickey

問題二:上面對應的讀取函式對了為什麼,還是執行就出錯了呢

intpem_write_rsapublickey(file*fp,

rsa *x);檔案指標使用fopen開啟。國外**說是fopen

的c庫版本和openssl編譯c庫不一樣執行就導致相容性出錯了。請確保在同一臺機器編譯好openssl,同一臺

機器使用。

問題三:既然以上兩點都注意了還錯,那就是版本問題了,32位環境編譯的在32位工程裡面用,64位的在64位

裡面用

,debug版

本用debug的專案,

release版本用release的專案。混用了要不然編譯不過,要不然會執行閃退。

php使用openssl來實現RSA 非對稱加密

使用非對稱加密主要是借助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。1.安裝openssl和php的openssl擴充套件 2.生成私鑰 openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 plain view plain copy op...

Qt5使用openssl實現RSA數字簽名

1 環境安裝 win7 64 2 在qt5工程的pro中 填寫 libs lc openssl win32 lib mingw llibeay32libs lc openssl win32 lib mingw lssleay32includepath quote c openssl win32 in...

使用OpenSSL生成RSA公私鑰

1.openssl genrsa out rsa private key 2048.pem 2048 生成rsa私,x509編碼,2048位 2.openssl pkcs8 in rsa private key 2048.pem out rsa private key 2048 pkcs8.pem ...