在Ubuntu上使用GnuPG進行PGP簽章加解密

安裝套件

sudo apt-get install gnupg

產生簽章用key

gpg --gen-key
會需要填寫一些包含個人名稱, E-mail和輸入維護用的密碼
產生出的public key會存在家目錄~/.gnupg/pubring.gpg
產生出的private key會存在家目錄~/.gnupg/secring.gpg

如果需要修改已經產生的key,可以參考這篇

列出本機上的public/private key

gpg --list-keys
預設public key目錄~/.gnupg/pubring.gpg

gpg --list-secret-keys
預設private key目錄~/.gnupg/secring.gpg

匯入public/private key

gpg --import public_key
成功時會印出匯入成功的public key uid和hash code

gpg --allow-secret-key-import --import priv_key
成功時會印出匯入成功的private key uid, hash ccode, 和public key

對檔案加密

這裡使用keyring裏面有我個人名稱MiroChiu的private key進行檔案加密
gpg --recipient MiroChiu --output demo.en.txt --encrypt demo.txt
簡短的寫法
gpg -r MiroChiu -o demo.en.txt -e demo.txt

對檔案解密

解密的時候不需要指定要用哪把key,因為加密檔會有解密所需的public key資訊,只要你的keyring中有這把key就能夠解開他,
gpg -o demo.de.txt -d demo.en.txt

***由於GunPG是Linux的程式沒有副檔名的概念,所以拿GunPG加密我會建議在產生加密檔案的時候就把檔名多加上.pgp,避免其他使用者拿去Windows要解密的時候,因為沒有正常的副檔名而無法運作

對檔案加密並簽章

用自己的private key加密檔案,並用對方public key簽章,確定只有對方能夠解密
gpg --local-user MiroChiu --recipient "Your friend name" --armor --sign --encrypt demo.txt
簡短的寫法
gpg --local-user MiroChiu -r "Your friend name" --armor -s -e demo.txt

對有簽章加密的檔案解密
gpg -o demo_dec.tx -d demo.txt.pgp


參考資料:
http://www.ruanyifeng.com/blog/2013/07/gpg.html
https://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages-on-an-ubuntu-12-04-vps

留言