GPG 是一种文件加密与数字签名的开源软件,支持对称加密与非对称加密。
gpg [options] --symmetric myfile
, --symmetric
可以用短语法格式-c
gpg -o hello.gpg -c hello.txt
CAST5
加密算法,可以通过命令行选项指定加密算法,如指定AES256,可加选项--cipher-algo AES256
; 另外 CASY5
默认是无完整性检测的,如果需要打开可以加选项 --force-mdc
gpg [options] --decrypt
, --decrypt
可以用短语法格式 -d
gpg -o hello.txt -d hello.gpg
密钥生成过程
gpg --gen-key
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
GnuPG needs to construct a user ID to identify your key.
Real name: xxxxx
Email address: xxxxx@xxx.xxx
Comment: xxxxx
You selected this USER-ID:
"realname (comment) <xxxxx@xxx.xxx>"
生成的公钥可以发布到公钥服务器上,或者直接传给对方使用
gpg --send-keys USER-ID --keyserver hkp://keyserverhost
密钥导入
gpg --import keyfile
gpg --keyserver hkp://keyserverhost --search-keys USER-ID
指纹机制
gpg --fingerprint USER-ID
加密文件
gpg --recipient USER-ID --output hello.txt.gpg --encrypt hello.txt
解密文件
gpg --decrypt hello.txt.gpg --output hello.txt
gpg hello.txt.gpg
文件签名
gpg --sign hello.txt
,会默认生成一个.gpg结尾的文件,或者也可以通过 -o destfile
选项指定生成的文件名gpg --clearsign demo.txt
gpg --armor --detach-sign demo.txt
会默认生成一个.asc结尾的文件,或者也可以通过 -o destfile
选项指定生成的文件名 文件签名验证
gpg --verify hello.txt.gpg
gpg --verify hello.txt.asc hello.txt
加密同时签名
gpg --local-user LOCAL-USER-ID --recipient RECEIVE-USER-ID --armor --sign --encrypt hello.txt
gpg -o hello.txt.gpg --cipher-algo AES256 --sign --symmetric hello.txt
gpg --verify xxx
, 解密的时候会自动进行签名验证