OpenSSL加密應(yīng)用小結(jié)

OpenSSL 是一個強(qiáng)大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協(xié)議,并提供豐富的應(yīng)用程序供測試或其它目的使用。但是您是否知道使用OpenSSL可以用它來對文件或消息進(jìn)行加密呢?那么小編就教您幾個簡單好學(xué)的小技巧。

一:對消息如何進(jìn)行加密和解密呢?

首先我們不妨對簡單的消息進(jìn)行加密下面這個命令將使用Base編碼方法(Base?Encoding)對"Welcome to LinuxCareercom"(歡迎訪問LinuxCaeercom)這個消息進(jìn)行加密

$ echo "Welcome to LinuxCareercom" | openssl enc?base

VVsYtZSBbyBMaWeENhcmVlcijbK

上述這個命令的輸出是一個經(jīng)過加密的字符串含有已經(jīng)過編碼的消息"Welcome to LinuxCareercom"想對經(jīng)過編碼的字符串進(jìn)行解密恢復(fù)成原始消息我們就要顛倒順序加上d選項進(jìn)行解密

$ echo "VVsYtZSBbyBMaWeENhcmVlcijbK" | openssl enc?base?d

Welcome to LinuxCareercom

上述加密易于使用不過它缺少密碼的一個重要特性這個重要特性應(yīng)該可用于加密比如說試著用密碼"pass"對下列字符串進(jìn)行解密

UFsdGVkXxscMhkpIAJqdN/nSjjTcNrDUCCBSLpZQxQDbipdkexj

為此就要再次使用OpenSSL這回帶d選項和編碼方法aescbc

echo "UFsdGVkXxscMhkpIAJqdN/nSjjTcNrDUCCBSLpZQxQDbipdkexj" | openssl

enc?aescbc?d?a

你恐怕已經(jīng)猜想到了要像上面那樣用密碼創(chuàng)建經(jīng)過加密的消息可以使用下面這個命令

$ echo "OpenSSL" | openssl enc?aescbc?a enter aescbc encryption password:

Verifying??enter aescbc encryption password:

UFsdGVkXEHmeD+qmCfkEsXDTnnCn/sblr=

如果你想把OpenSSL的輸出存儲到文件中而不是存儲到STDOUT只要使用STDOUT重定向">"將經(jīng)過加密的輸出存儲到文件中時你還可以刪去a選項因為不再需要輸出是基于ASCII文本的

$ echo "OpenSSL" | openssl enc?aescbc > openssldat

enter aescbc encryption password:

Verifying??enter aescbc encryption password:

$ file openssldat

openssldat: data

想對openssldat文件進(jìn)行解密恢復(fù)至原始消息請使用

$ openssl enc?aescbc?d?in openssldat

enter aescbc decryption password:

OpenSSL

二:怎樣對文件進(jìn)行加密和解密呢?

想使用OpenSSL對文件進(jìn)行加密其實就跟對消息進(jìn)行加密一樣簡單唯一的區(qū)別在于我們不是使用echo命令而是使用in選項后面跟以我們想進(jìn)行加密的實際文件并使用out選項這會指令OpenSSL將經(jīng)過加密的文件存儲到某個名稱的文件中

$ openssl enc?aescbc?in /etc/services?out servicesdat

想對我們的服務(wù)文件進(jìn)行解密恢復(fù)成原樣請使用

$ openssl enc?aescbc?d?in servicesdat > servicestxt

enter aescbc decryption password:

三:對目錄進(jìn)行加密和解密

首先你需要創(chuàng)建gzip打包文件(tarball)然后用上述方法對該打包文件進(jìn)行加密也可以使用pipe同時完成這兩項任務(wù)

# tar cz /etc | openssl enc?aescbc?out etctargzdat

tar: Removing leading `/?from member names

enter aescbc encryption password:

Verifying??enter aescbc encryption password:

想對整個etc/目錄進(jìn)行解密并提取到當(dāng)前的工作目錄請使用

# openssl enc?aescbc?d?in etctargzdat | tar xz

enter aescbc decryption password:

上述方法對自動備份加密目錄來說相當(dāng)有用

總結(jié):

以上的幾個加解密都是OpenSSL的基礎(chǔ)部分,但說到這款加密工具包其實它的用途還是很廣泛的!如果興趣的小伙伴,可以在網(wǎng)上搜索相關(guān)知識進(jìn)行學(xué)習(xí)的哦!