openssl:
linux系統自帶的加密工具
官網:https://www.openssl.org/
包括三個組件:
- libcrypto:用於實現加密和解密的庫
- libssl:用於實現ssl通信協議的安全庫
- openssl:多用途命令行工具
Base64 編碼:
Base64是網絡上最常見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可打印字符來表示二進制數據的方法
base64的編碼過程如下:
- 將每3個字節放入一個24位的緩沖區中,最后不足3個字節的,緩沖區的剩余部分用0來填補。然后每次取出6位(2的6次方為64,使用64個字符即可表示所有),將高2位用0來填充,組成一個新的字節,計算出這個新字節的十進制值,對應上面的編碼表,輸出相應的字符。這樣不斷地進行下去,就可完成對所有數據的編碼工作
openssl命令:
兩種運行模式:
- 交互模式
- 批處理模式
三種子命令:
- 標准命令
- 消息摘要命令
- 加密命令
openssl命令對稱加密:
工具:
openssl enc、gpg
算法:
3des, aes, blowfish, twofish
enc子命令:
幫助:man enc
例:
openssl enc -e -des3 -a -in red -out red.xx
openssl enc -e -des3 -a -in red.xx
openssl命令單向哈希加密:
工具:
openssl dgst、md5sum、sha1sum等
算法:
md5sum, sha1sum, sha224sum,sha256sum…
dgst子命令:
幫助:man dgst
MAC:
Message Authentication Code,單向加密的一種延伸應用,用於實現網絡通信中保證所傳輸數據的完整性機制
HMAC:
hash-based MAC,使用md5或sha1算法
例:
openssl md5 fstab
openssl sha512 fstab
sha256sum red
openssl命令生成用戶密碼:
#sha512加密,標准輸入讀取,-salt加鹽
echo 123456|openssl passwd -6 -salt qwert134 -stdin
openssl passwd -6 -salt qwert134 123456
useradd -p `echo 123456|openssl passwd -6 -salt Y16DiwuVQtL6XCQK -stdin` hj
openssl命令生成隨機數:
隨機數生成器:偽隨機數字,利用鍵盤和鼠標,塊設備中斷生成隨機數
隨機數生成方法:
- /dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
- /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞
例:
openssl rand -base64 9 #可用於隨機密碼
openssl rand -hex 9
#特別生成辦法:用tr隨機,取前30再mdk5加密
tr -dc '[:alnum:]' < /dev/urandom|head -c10
tr -dc 'a-zA-Z0-9' < /dev/urandom|head -c10
openssl命令實現 PKI:
公鑰加密:
算法:
RSA, ELGamal
工具:
gpg, openssl rsautl(man rsautl)
數字簽名:
算法:
RSA, DSA, ELGamal
密鑰交換:
算法:
dh
DSA:Digital Signature Algorithm
DSS:Digital Signature Standard
RSA
生成私鑰:
openssl genrsa -out 路徑 [-des3] [加密位數,默認2048]
例:
openssl genrsa -out a.key 2048
openssl genrsa -out app2.key -des3 2048 #給私鑰加密
從私鑰提取公鑰:
openssl rsa -in a.key -pubout -out a.pub