一. 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
問題二:上面對應的讀取函式對了為什麼,還是執行就出錯了呢
int
pem_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 ...