UNIX文件加密

2018-11-24 15:23 更新

單個(gè)文件

加密和解密:

# openssl des -salt -in file -out file.des
# openssl des -d -salt -in file.des -out file

那個(gè) file 可以是歸檔文件(tar archive)。

歸檔并加密整個(gè)目錄

# tar -cf - directory | openssl des -salt -out directory.tar.des      # 加密
# openssl des -d -salt -in directory.tar.des | tar -x                 # 解密

壓縮歸檔并加密整個(gè)目錄

# tar -zcf - directory | openssl des -salt -out directory.tar.gz.des  # 加密
# openssl des -d -salt -in directory.tar.gz.des | tar -xz             # 解密
  • 在使用-k mysecretpassword后,des會(huì)取消交互式的密碼請(qǐng)求。不過(guò),這非常不安全。

  • 使用des3代替des來(lái)獲得更強(qiáng)的加密(Triple-DES Cipher)。這同樣會(huì)消耗更多的CPU。

GPG

GnuPG 是眾所周知的對(duì)郵件或任何數(shù)據(jù)進(jìn)行加密和簽名的軟件。此外,gpg 還提供高級(jí)密鑰管理系統(tǒng)。此章節(jié)只涵蓋了文件加密,沒(méi)有郵件加密、簽名或者信任網(wǎng)絡(luò)(Web-Of-Trust)。
單純的加密是一個(gè)對(duì)稱式的加密算法(symmetric cipher)。在本例中,文件是用一個(gè)秘密來(lái)加密的,任何人知道了這個(gè)密碼都可以對(duì)其進(jìn)行解密,因此就不需要密鑰。Gpg 添加后綴 ".gpg" 到已加密的文件名。

# gpg -c file                        # 使用密碼加密文件
# gpg file.gpg                       # 文件解密(選項(xiàng) -o 其他文件)

使用密鑰

對(duì)于更詳細(xì)的請(qǐng)看 GPG 快速上手 和 GPG/PGP 基礎(chǔ),特別是 gnupg 文檔。
密鑰對(duì)(私鑰,公鑰)為非對(duì)稱加密技術(shù)。 要點(diǎn)如下:

  • 你的公鑰是用來(lái)給_別人_加密文件的并且只有你作為接收者才可以解密(甚至不是一個(gè)人加密的文件也可以解密)。公鑰是公開的也就意味著可以分發(fā)。

  • 用你的密碼加密的私鑰用來(lái)解密用_你的_公鑰加密的文件。這個(gè)密鑰必須保持安全。因?yàn)槿绻z失了私鑰或者密碼,那么所有的文件都是使用你的公鑰加密的。

  • 多個(gè)密鑰文件被稱為密鑰環(huán)(keyrings),她可以包含一個(gè)以上的密鑰。

首先生成密鑰對(duì)。使用默認(rèn)就行,但你至少要輸入你的全名、郵件地址和可選注釋。該注釋對(duì)于創(chuàng)建相同的名字和郵件地址的多個(gè)密鑰來(lái)說(shuō)非常有用。此外,你應(yīng)該使用"口令(passphrase)",而不是簡(jiǎn)單的密碼。

# gpg --gen-key                      # 這需要一些時(shí)間

在 Unix 上密鑰存儲(chǔ)在 ~/.gnupg/ 中,在 Windows 上通常存儲(chǔ)在
C:/Documents and Settings/%USERNAME%/Application Data/gnupg/ 中。

~/.gnupg/pubring.gpg                 # 包含你的公鑰和所有其他導(dǎo)入的信息
~/.gnupg/secring.gpg                 # 可包含多個(gè)私鑰

常用選項(xiàng)的簡(jiǎn)短描述:

  • -e 加密數(shù)據(jù)

  • -d 解密數(shù)據(jù)

  • -r 為某個(gè)收件者加密('全名' 或者 'email@domain')

  • -a 輸出經(jīng)過(guò) ascii 封裝的密鑰

  • -o 指定輸出文件

本實(shí)例使用'Your Name' 和 'Alice' 作為密鑰的 email 或 全名 或 部分名字的參考。舉個(gè)例子,我可以使用 'Colin' or 'c@cb.vu' 給我的密鑰 [Colin Barschel (cb.vu) c@cb.vu]。

只用于個(gè)人的加密

不需要導(dǎo)出/導(dǎo)入任何密鑰,因?yàn)槟愣家呀?jīng)有了。

# gpg -e -r 'Your Name' file                  # 使用你的公鑰加密
# gpg -o file -d file.gpg                     # 解密。使用 -o 指定輸出文件

用密鑰加密-解密

首先你需要導(dǎo)出給別人使用的公鑰。并且你需要導(dǎo)入來(lái)自 Alice 她所加密文件的公鑰。你可以用簡(jiǎn)單的 ascii 文檔或者使用公鑰服務(wù)器來(lái)保存這些密鑰。
舉個(gè)例子,Alice 導(dǎo)出她的公鑰,然后你導(dǎo)入它,之后你就可以加密一個(gè)文件給她。這個(gè)加密文件只有 Alice 可以解密。

# gpg -a -o alicekey.asc --export 'Alice'               # Alice 導(dǎo)出她的公鑰到 ascii 文件中
# gpg --send-keys --keyserver subkeys.pgp.net KEYID     # Alice 把她的公鑰放入一個(gè)服務(wù)器
# gpg --import alicekey.asc                             # 你導(dǎo)入她的密鑰到你的公鑰環(huán)(pubring)中
# gpg --search-keys --keyserver subkeys.pgp.net 'Alice' # 或者從一個(gè)服務(wù)器中獲取他的公鑰

一旦這些公鑰導(dǎo)入后,加密或解密一個(gè)文件會(huì)非常簡(jiǎn)單:

# gpg -e -r 'Alice' file                      # 給 Alice 加密文件
# gpg -d file.gpg -o file                     # 解密 Alice 給你的加密文件

密鑰管理

    # gpg --list-keys                             # 列出所有公鑰并查看其 KEYID
    KEYID 跟在 '/' 后面 比如:pub   1024D/D12B77CE 它的 KEYID 是 D12B77CE
    # gpg --gen-revoke 'Your Name'                # 產(chǎn)生一份撤銷密鑰證書
    # gpg --list-secret-keys                      # 列出所有私鑰
    # gpg --delete-keys NAME                      # 從本的密鑰環(huán)中刪除一個(gè)公鑰
    # gpg --delete-secret-key NAME                # 從本的密鑰環(huán)中刪除一個(gè)私鑰
    # gpg --fingerprint KEYID                     # 顯示 KIYID 這個(gè)密鑰的指紋
    # gpg --edit-key KEYID                        # 編輯密鑰(比如簽名或者添加/刪除 email)
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)