GnuPG加密情景
42想發送一條消息給55,並且這條消息只有55能看到。首先42和55都用GnuPG生成自己的公鑰和私鑰。然後55把公鑰交給42,公鑰怎麼傳遞都行,不需要保密。42使用自己的私鑰和55的公鑰來把消息加密,生成加密的消息發給55。55拿到加密的消息後用自己的私鑰解密即可看到原始消息。
安卓使用OpenKeychain
從F-Droid或Google Play下載OpenKeychain,導入已有證書(公鑰私鑰均可導入)或生成新的證書。然後通過二維碼或你喜歡的其他方式分享公鑰。發送者使用接收者的公鑰和自己的私鑰加密文件,然後發送加密文件給接收者,接收者用自己的私鑰解開文件。使用OpenKeychain,不僅可以方便的加密與解密文件和文本,更可與K-9 Mail搭配實現加密的郵件。
命令行使用GnuPG
Fedora似乎時預裝了GnuPG和GnuPG2,我們可以用gpg和gpg2來使用它。Termux可以使用pkg install gunpg,用法是一樣的,而且版本是最新版。Fedora26比最新版還差一個小版本。我樂於追新,所以這裡都用gpg2。順便提一下,GnuPG念做“格努皮即”。關於GNU有興趣的朋友可以到GNU作業系統與自由軟體運動了解下。
把證書從OpenKeychain導出並導入Fedora的GnuPG2
#手機上選擇要備份的證書,右上角菜單,備份證書 #抄下來44位密碼,勾選已抄下,按一下保存備份 #然後把生成的文件backup_YYYY-MM-DD.pgp傳送的Fedora #在Fedora上備份文件的所在目錄執行 gpg2 --decrypt backup_YYYY-MM-DD.pgp | gpg2 --import #按照提示輸入剛剛抄下來44位密碼 #列出已有的密鑰,最長那串就是ID gpg2 --list-keys #編輯密鑰 gpg2 --edit-key [ID] #由於我們是物理傳輸過來的,所以不用對比指紋了,直接trust trust 5 y save #這樣就可以了
使用 GnuPG2 加密和解密文件
#將 A.txt 加密 gpg2 --encrypt -r [email protected] A.txt #可選參數還有 # --sign 加密者信息 # --armor 把文件加密成 ASCII 文件 #解密 A.txt.gpg gpg --decrypt A.txt.gpg > A.txt
其他GnuPG2常用命令
##生成一對密鑰 gpg2 --full-generate-key #密鑰種類默認RSA和RSA即可 #RSA密鑰長度默認2048即可 #過期日期默認0即永久,後面會講撤銷方法 #繼續輸入名字、郵箱和注釋 #然後就開始生成密鑰了,這時可以做些移動鼠標敲擊鍵盤的動作幫助程序獲取隨機數 #Termux可能要一兩分鐘,Fedora貌似20秒就搞定了 ##導入導出刪除撤銷密鑰 #列出已有的密鑰 gpg2 --list-keys #列出密鑰的指紋 gpg2 --fingerprint #為密鑰生成撤銷證書 gpg2 --gen-revoke fred42 > revoke_fred42.txt #導出一把公鑰,-a表示轉換為可打印字符 gpg2 --export -a fred42 > public.key #導出一把私鑰,-a表示轉換為可打印字符 gpg2 --export-secret-key fred42 > private.key #導入一把密鑰 gpg2 --import public.key #刪除一把公鑰 gpg2 --delete-key fred42 #刪除一把私鑰 gpg2 --delete-secret-key fred42 ##使用密鑰服務器上傳搜索與下載公鑰 #Please blame the wall
我的公鑰指紋:F296 FC4F B714 BA14 6366 FEDF 15F7 F20A 33D8 3525和公鑰:
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 Gck= =CXuU -----END PGP PUBLIC KEY BLOCK-----
使用GnuPG生成隨機密碼
生成一個16位的隨機密碼
gpg2 --gen-random -a 0 16 | head -c 16
也可將下面代碼存為password.sh,運行./password.sh 16來獲得。
#!/bin/bash if [ $# -eq 0 ] then echo "請指定待生成密碼的長度" else gpg2 --gen-random -a 0 $1 | head -c $1 echo "" fi
本文更新於 2020/10/30。
在〈使用GnuPG加密文件〉中有 1 則留言
一些隨機碼
16位
atXsS6C6JwZp+/7F
SPx0vkeSeJDwTnkg
of7mQwn7IZ5UO3Mv
HLRivou4AgvH4vqn
NPEHPCUh9i6sc8B0
gaSiEFMDhvTImj2N
ocXXweHqL29aYvtw
tqkc8kndIf00atYD
GINjFrjx6xTVNUHM
hHvqDLnFI1IRsQK+
32位
ILrzFv2bWIZQPCkbCSyxcPLIRTBD4ZiB
CnZXk7d7Ve4NJlE4y7lDITE2i21WNiVW
s2mHGnqI74tjdRDkK7bILy7I1NYFa+a0
/OzCsLw4OETDvu7iGN09j+Fn2WHTXtsv
800ZnTwW838NVCTAKsy0FslvUW0lyRFZ