一、概念
1、加密有兩種類型
密鑰加密(secret-key encryption)使用相同的密鑰進行加密和解密,也叫對稱加密
公鑰加密(public-key encryption)使用不同的密鑰進行加密和解密,也叫非對稱加密
密鑰加密速度更快,公鑰加密更加安全,因為它解決了安全共享密鑰的問題
2、公鑰加密使用兩組密鑰,稱為密鑰對
一個是公鑰,用於加密,可以與你想要秘密通信的任何人自由共享、交換;
一個是私鑰,用於解密,應該是一個秘密,永遠不會共享。
如你想與別人交流敏感文件,可將你的公鑰發送給他,他使用公鑰加密文件,然后將加密后的文件其發送給你。你解密發件人的加密文件的唯一方法,是使用私鑰進行解密。
二、公鑰加密/非對稱加密
1、生成私鑰
#定義私鑰文件的名字
export PRIVATE_KEY=liking_private
#定義公鑰文件的名字
export PUBLIC_KEY=liking_public
#生成私鑰
openssl genrsa -aes128 -out ${PRIVATE_KEY}.pem 1024
2、查看私鑰
openssl rsa -in ${PRIVATE_KEY}.pem -noout -text
hexdump -C ./${PRIVATE_KEY}.pem
3、提取公鑰
openssl rsa -in ${PRIVATE_KEY}.pem -pubout > ${PUBLIC_KEY}.pem
4、查看公鑰
openssl rsa -in ${PUBLIC_KEY}.pem -pubin -text -noout
hexdump -C ./${PUBLIC_KEY}.pem
5、使用公鑰加密文件
以下腳本可以對多個文件進行加密:
vim liking_enc.sh
#!/bin/bash
export PRIVATE_KEY=liking_private
export PUBLIC_KEY=liking_public
export FILES="oratopjk oratopts oratopwy oratopzz sqlplusjk sqlplusts sqlpluswy sqlpluszz"
for file in ${FILES}
do
openssl rsautl -encrypt -inkey ${PUBLIC_KEY}.pem -pubin -in ${file} -out ${file}.enc
rm -rf ${file}
done
注1:-inkey指定密鑰,默認是私鑰,再加-pubin表示指定公鑰
注2:rsautl只能對短小的文件進行操作,否則將報"data too large for key size"
hexdump -C ./${file}.enc
6、使用私鑰解密文件
以下腳本可以對多個文件進行解密:
vim liking_dec.sh
#!/bin/bash
export PRIVATE_KEY=liking_private
export PUBLIC_KEY=liking_public
export FILES="oratopjk oratopts oratopwy oratopzz sqlplusjk sqlplusts sqlpluswy sqlpluszz"
for file in ${FILES}
do
openssl rsautl -decrypt -inkey ${PRIVATE_KEY}.pem -in ${file}.enc -out ${file}
rm ${file}.enc
done
chmod +x ${FILES}
三、密鑰加密/對稱加密
1、加密
openssl enc -e -aes-128-ecb -in ${FILE_NAME} -out ${FILE_NAME}.enc -pass pass:passw0rd -p
2、解密
openssl enc -d -aes-128-ecb -in ${FILE_NAME}.enc -out ${FILE_NAME} -pass pass:passw0rd -p
3、批量文件壓縮、加解密操作
#壓縮並加密一組文件如x、y,生成文件xy
tar cvfz - x y | openssl enc -e -aes-128-ecb -out xy -pass pass:passw0rd
#解壓縮並解密文件xy,恢復為源文件x、y
openssl enc -d -aes-128-ecb -in xy -pass pass:passw0rd | tar xvfz -
4、批量文件壓縮、加解密操作:【其他參考】
tar cvfz - x y | openssl des3 -salt -k passw0rd -out xy
openssl des3 -d -k passw0rd -salt -in xy | tar xvfz -
四、總結
以上可以看出,在工作中選擇加密方式的策略如下:
1、如果追求安全、無痕,則采用非對稱加密,自始至終沒有明文密碼痕跡,但稍顯復雜,且以上方法只能加密小文件。
2、如果追求簡單、實用,則采用對稱加密,一個命令即可實現,但是命令行歷史會暴露密碼明文。