OpenSSL簡單用法總結

2021-10-04 20:21:17 字數 3238 閱讀 7195

openssl:

秘鑰證書管理、對稱加密和非對稱加密

openssl:多用途的命令列工具,包括openssl,可以執行互動或批量命令。

libcrypto:加密演算法庫,包括openssl-libs。

libssl:加密模組應用庫,實現ssl以及tls,包nss。

加密密令

工具:openssl enc,gpg

演算法:3des、aes、blowfish、twofish等

常用選項:

-in filename :指定要加密的檔案存放路徑

-out filename:指定加密後的檔案存放路徑

-salt 自動插入乙個隨機數為檔案內容加密

-e 加密

-d 解密,可指定演算法。

-a/base64: 進行加解密時,只對資料進行計算,有時候需要進行base64轉換。

加解密演算法可以自己制定,可以通過openssl help enc 檢視

幫助:man enc

加密:openssl enc -e -des3 -a -salt -in testfile -out testfiler

解密:openssl enc -d -dec3 -a -salt -in testfiler -out testfile

對稱加密演算法:

共8中:(7中分組加密、1中流加密演算法)

7:aes、des、blowfish、cast、idea、rc2、rc5

都支援電子密碼本模式(ecb)、加密分組鏈結模式(cbc)、加密反饋模式(cfb)和輸出反饋模式(ofb)四種常用的分組密碼加密模式。

其中,aes使用的加密反饋模式(cfb)和輸出反饋模式(ofb)分組長度是128位,其它演算法使用的則是64位。

事實上,des演算法裡面不僅僅是常用的des演算法,還支援三個金鑰和兩個金鑰3des演算法。

1:rc4

非對稱加密演算法:

共4種(dh、rsa、dsa、橢圓曲線演算法ec)

dh演算法一般使用者金鑰交換。

rsa演算法既可以用於金鑰交換,也可以用於數字簽名,當然,如果你能夠忍受其緩慢的速度,那麼也可以用於資料加密。

dsa演算法則一般只用於數字簽名。

摘要命令

5種資訊摘要演算法:md2、md5、mdc2、sha(sha1)、ripemd

openssl還實現了dss1和dss

作用:1.作資訊完整性校驗

2.儲存密碼,有時候可以採用md5(真實密碼值儲存),有的還進行加驗處理,丟失只能重置,不可逆。

語句:openssl dgst

常用選項:

-md5|-md4|-md2|-sha|-mdc2|-ripemd160|-dssl 指定一種摘要演算法。

-out filename 將摘要內容儲存到指定檔案中

幫助:man dgst

openssl dgst -md5 [-hex預設16進製制] /path/somefile

openssl dgst -md5 testfile

mac :單向加密的一種延伸應用,用於實現網路通訊中保證所傳輸資料的完整性機制

生成密碼和base64

命令:passwd

openssl passwd [-crypt] [-1] [-apr1] [-salt string] [-in file] [-stdin] [-noverify] [-quiet] [-table]

常用選項:

-1 使用md5加密演算法

-salt string : 加入隨機數,最多8為隨機數

-in file:對輸入檔案內容進行加密

-stdion: 對標準內容進行加密

生產隨機數

在ssl互動的時候要生隨機數。

命令: rand

openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num (num 是多少位的意思)

常用選項:

-out file:將生成的隨即數存入指定檔案中

-base64:使用base64進行編碼

-hex:使用16進製制編碼格式

生成金鑰對

先用genrsa標準命令生成私鑰,在用rsa標準命令生成公鑰。

genrsa用法:

openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]

常用選項:

-des|-dec3|-idea 演算法

numbits:生成私鑰大小,一般位2048

一般使用umask設定私鑰許可權,只能自己讀寫。

(umask 066;openssl genrsa -out 1.txt 4096;)

rsa用法:

openssl rsa [-inform pem|net|der] [-outform pem|net|der] [-in filename] [-passin arg] [-out filename] [-passout arg]

[-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-engine id]

常用選項:

-pubout 根據私鑰提取公鑰

openssl rsa -in 1.txt -out 2.txt -pubout

小結

用私鑰給檔案簽名:

openssl pkeyutl -sign -in tos.txt -inkey key.pem -out tos.sig

用公鑰驗證簽名:

openssl pkeyutl -verify -in tos.txt -sigfile tos.sig -pubin -inkey pubkey.pem

用公鑰加密檔案:

openssl pkeyutl -encrypt -in tos.txt -pubin -inkey pubkey.pem -out tos.enc

用私鑰解密檔案:

openssl pkeyutl -decrypt -in tos.enc -inkey key.pem -out tos.dec

CocoaPods 簡單用法總結

2 需要修改更換源 由於國內被牆 要把源切換至 映象伺服器 gem source l檢視當前源 如果執行結果不是 此時需要更換源 更換源的命令列 gem update system gem uninstall rubygems update gem sources r gem sources a 替...

mysql的簡單用法 mysql簡單用法

刪除使用者 drop user jack drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底 更改使用者名稱 rename user jack to jacknew 使用者的都存在與user表中,更改名稱,許可權不變 更改使用者密碼 update mysql.user se...

STL容器的簡單用法總結

set 屬性 不允許元素重複,元素字典序排列,不提供下標操作符 宣告 seta 插入 a.insert b 遍歷 set iterator a it 迭代器是靜態的 for a it a.begin a it a.end a it cout a it 判斷是否是空 a.empty 元素個數 a.si...