gpg一般是兩方用來加密傳送資訊的。
使用對方的公鑰進行加密,可以確保只有對方才能用他的私鑰解密。
使用自己的私鑰對訊息簽名,可以確保對方用自己的公鑰驗證訊息的確源自自己。
gpg --generate-key
之後會詢問使用者名稱、郵箱以及密碼,最後會需要大量的隨機數(這裡我等了十分鐘以上才好)
一般私鑰匯出是為了在其他機器上解密檔案
# 獲取私鑰id
gpg --list-secret-keys
# 匯出私鑰到檔案
gpg --export-secret-keys $id > my-private-key.asc
# 在另一台機器上匯入
gpg --import my-private-key.asc
# 如果另一台機器上已經存在,則可以先刪除
gpg --delete-keys
gpg --delete-secret-keys
# 檢視有哪些公鑰可匯出
gpg --list-keys
# 匯出指定公鑰
gpg --output blake.gpg --armor --export [email protected]
# 匯入
gpg --import blake.gpg
# 確認key有效
gpg --edit-key [email protected]
>fpr
># 注意這裡trust要選擇5,後面簽名才能不用再確認
>trust
>check
gpg --encrypt --armor --recipient recipient_email $file
gpg --decrypt --output message-for-me.gpg
快取
通常情況下,使用gpg 解密後,gpg agent會快取輸入的密碼一段時間。
如果需要強制不進行快取,每次都提示輸入密碼
建立~/.gnupg/gpg-agent.conf
檔案,並增加以下內容:
default-cache-ttl 1
max-cache-ttl 1
然後重啟gpg agent:
echo reloadagent | gpg-connect-agent
通過命令列提供密碼
如果想在指令碼中進行解密,一般是不希望彈出密碼框,而是直接通過命令提供。
命令如下:
gpg --pinentry-mode loopback --batch --yes --passphrase "$" --output $ --decrypt $
這裡關鍵有兩點:
必須增加--batch
選項,否則--passphrase
選項無效,這是在man手冊裡有說的
必須增加--pinentry-mode loopback
選項,否則仍然提示密碼框,這個手冊中沒說,搜尋了很久才知道如何解決(這個回答)
Sentinel LDK linux加密使用
在windows上安裝sentinel ldk 將linux相應程式包拷貝到linux作業系統 在windows上設定加密的資訊 進入sentinel ldk sdk 7.9 linux redistribute runtime目錄 安裝aksusbd ubuntu通過dpkg安裝,centos通過...
RSA 加密解密使用例項
本文不討論rsa加密解密本身,只記錄使用方法及遇到的坑,rsa原理及注意事項可在網上查詢。背景 公司的乙個需求,要求對接客戶的乙個平台,通訊方式為mqtt,資料報含token及json內容,在通訊過程中傳送的mqtt資訊必須帶上token,這個token是要從客戶平台獲取,通過http協議,post...
使用 GPG 加密和解密檔案
目標 使用 gpg 加密檔案 發行版 適用於任何發行版 要求 安裝了 gpg 的 linux 或者擁有 root 許可權來安裝它。難度 簡單 約定 介紹 加密非常重要。它對於保護敏感資訊來說是必不可少的。你的私人檔案應該要被加密,而 gpg 提供了很好的解決方案。安裝 gpg gpg 的使用非常廣泛...