1. 程式人生 > 其它 >openssl加解密實戰

openssl加解密實戰

一、概念

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、批量檔案壓縮、加解密操作

export FILE_NAME=orasql.tar.gz.enc
tar cvfz - oratop?? sqlplus?? | openssl enc -e -aes-128-ecb -out ${FILE_NAME} -pass pass:passw0rd
openssl enc -d -aes-128-ecb -in ${FILE_NAME} -pass pass:passw0rd | tar xvfz -

4、批量檔案壓縮、加解密操作:【其他參考】

tar cvfz - oratop?? sqlplus?? | openssl des3 -salt -k passw0rd -out ${FILE_NAME}
openssl des3 -d -k passw0rd -salt -in ${FILE_NAME} | tar xvfz -