## 單個文件
加密和解密:
#?openssl?des?-salt?-in?file?-out?file.des
#?openssl?des?-d?-salt?-in?file.des?-out?file
那個 file 可以是歸檔文件(tar archive)。
## 歸檔并加密整個目錄
#?tar?-cf?-?directory?|?openssl?des?-salt?-out?directory.tar.des??????#?加密
#?openssl?des?-d?-salt?-in?directory.tar.des?|?tar?-x?????????????????#?解密
## 壓縮歸檔并加密整個目錄
#?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會取消交互式的密碼請求。不過,這非常不安全。
-
使用des3代替des來獲得更強的加密(Triple-DES Cipher)。這同樣會消耗更多的CPU。
## GPG
[GnuPG](http://gnupg.org/)?是眾所周知的對郵件或任何數據進行加密和簽名的軟件。此外,gpg 還提供高級密鑰管理系統。此章節只涵蓋了文件加密,沒有郵件加密、簽名或者信任網絡(Web-Of-Trust)。
單純的加密是一個對稱式的加密算法(symmetric cipher)。在本例中,文件是用一個秘密來加密的,任何人知道了這個密碼都可以對其進行解密,因此就不需要密鑰。Gpg 添加后綴 ".gpg" 到已加密的文件名。
#?gpg?-c?file????????????????????????#?使用密碼加密文件
#?gpg?file.gpg???????????????????????#?文件解密(選項?-o?其他文件)
## 使用密鑰
對于更詳細的請看?[GPG 快速上手](http://www.madboa.com/geek/gpg-quickstart)?和?[GPG/PGP 基礎](http://aplawrence.com/Basics/gpg.html),特別是?[gnupg 文檔](http://gnupg.org/documentation)。
密鑰對(私鑰,公鑰)為非對稱加密技術。 要點如下:
-
你的公鑰是用來給_別人_加密文件的并且只有你作為接收者才可以解密(甚至不是一個人加密的文件也可以解密)。公鑰是公開的也就意味著可以分發。
-
用你的密碼加密的私鑰用來解密用_你的_公鑰加密的文件。這個密鑰必須保持_安全_。因為如果遺失了私鑰或者密碼,那么所有的文件都是使用你的公鑰加密的。
-
多個密鑰文件被稱為密鑰環(keyrings),她可以包含一個以上的密鑰。
首先生成密鑰對。使用默認就行,但你至少要輸入你的全名、郵件地址和可選注釋。該注釋對于創建相同的名字和郵件地址的多個密鑰來說非常有用。此外,你應該使用"口令(passphrase)",而不是簡單的密碼。
#?gpg?--gen-key??????????????????????#?這需要一些時間
在 Unix 上密鑰存儲在 ~/.gnupg/ 中,在 Windows 上通常存儲在
C:/Documents and Settings/%USERNAME%/Application Data/gnupg/ 中。
~/.gnupg/pubring.gpg?????????????????#?包含你的公鑰和所有其他導入的信息
~/.gnupg/secring.gpg?????????????????#?可包含多個私鑰
常用選項的簡短描述:
- **-e**?加密數據
- **-d**?解密數據
- **-r**?為某個收件者加密('全名' 或者 'email@domain')
- **-a**?輸出經過 ascii 封裝的密鑰
- **-o**?指定輸出文件
本實例使用'Your Name' 和 'Alice' 作為密鑰的 email 或 全名 或 部分名字的參考。舉個例子,我可以使用 'Colin' or 'c@cb.vu' 給我的密鑰 [Colin Barschel (cb.vu) <c@cb.vu>]。
## 只用于個人的加密
不需要導出/導入任何密鑰,因為你都已經有了。
#?gpg?-e?-r?'Your?Name'?file??????????????????#?使用你的公鑰加密
#?gpg?-o?file?-d?file.gpg?????????????????????#?解密。使用?-o?指定輸出文件
## 用密鑰加密-解密
首先你需要導出給別人使用的公鑰。并且你需要導入來自 Alice 她所加密文件的公鑰。你可以用簡單的 ascii 文檔或者使用公鑰服務器來保存這些密鑰。
舉個例子,Alice 導出她的公鑰,然后你導入它,之后你就可以加密一個文件給她。這個加密文件只有 Alice 可以解密。
#?gpg?-a?-o?alicekey.asc?--export?'Alice'???????????????#?Alice?導出她的公鑰到?ascii?文件中
#?gpg?--send-keys?--keyserver?subkeys.pgp.net?KEYID?????#?Alice?把她的公鑰放入一個服務器
#?gpg?--import?alicekey.asc?????????????????????????????#?你導入她的密鑰到你的公鑰環(pubring)中
#?gpg?--search-keys?--keyserver?subkeys.pgp.net?'Alice'?#?或者從一個服務器中獲取他的公鑰
一旦這些公鑰導入后,加密或解密一個文件會非常簡單:
#?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'????????????????#?產生一份撤銷密鑰證書
????#?gpg?--list-secret-keys??????????????????????#?列出所有私鑰
????#?gpg?--delete-keys?NAME??????????????????????#?從本的密鑰環中刪除一個公鑰
????#?gpg?--delete-secret-key?NAME????????????????#?從本的密鑰環中刪除一個私鑰
????#?gpg?--fingerprint?KEYID?????????????????????#?顯示?KIYID?這個密鑰的指紋
????#?gpg?--edit-key?KEYID????????????????????????#?編輯密鑰(比如簽名或者添加/刪除?email)
~~~