如何在Linux下使用GPG(GnuPG)加密及解密

如何在Linux下使用GPG(GnuPG)加密及解密

GPG即GNU Privacy Guard,本例中以CentOS(6.5和7)为例。

1.由于默认已经安装GPG,故直接输入“gpg --gen-key”并按回车键执行,然后输入“1”选择密钥种类。

GnuPGCentOS1.png

2.询问密钥对位数,默认为2048,本例中手动输入4096.

GnuPGCentOS2.png

3.提示输入密钥对有效期,输入“1y”(即一年后失效)并按回车键确定。

GnuPGCentOS3.png

4.提示将在一年后失效,输入“y”确认。

GnuPGCentOS4.png

5.输入密钥对名称(本例中为ytyzx2014gpg)。

GnuPGCentOS5.png

6.依次输入邮件地址和备注。

GnuPGCentOS6.png

7.询问是否修改或者确认,直接输入“o”确认。

GnuPGCentOS7.png

8.提示您需要设置私钥。

GnuPGCentOS8.png

9.再次输入私钥。

GnuPGCentOS9.png

10.系统需要时间生成密钥对,期间最好随机输入字符或移动鼠标等,有助于生成密钥对,结果如下图。

GnuPGCentOS10.png

11.输入“gpg --export -armor ytyzxnet@gmail.com -a > ytyzx2014gpgpublickey.txt”将密钥对的公钥导出,公钥文件名称为“ytyzx2014gpgpublickey.txt”。

GnuPGCentOS11.png

12.输入“vi ytyzx2014gpgpublickey.txt”查看公钥,将此公钥发送给需要加密的用户。

GnuPGCentOS12.png

13.该用户接收到公钥后,在命令行输入“gpg --import ytyzx2014gpgpublickey.txt”导入公钥。

GnuPGCentOS13.png

14.该用户输入“gpg --encrypt --recipient "ytyzx2014gpg" install.log”命令,意为使用公钥(名称为ytyzx2014gpg)加密名称为“install.log”的文件。
   系统提示您是否确认公钥指纹正确,在导入他人的公钥前建议详细核对,输入“y”继续。

GnuPGCentOS14.png

15.该用户加密完毕后发现同目录下生成一个名为“原文件名.gpg”的文件(本例中为install.log.gpg)。

GnuPGCentOS15.png

16.该用户输入“vi install.log.gpg”尝试查看加密文件,显示为乱码,将此加密文件(install.log.gpg)发送给我。
   注意:在只有公钥的情况下,加密后的文件无法读取。

GnuPGCentOS16.png

17.输入“gpg --decrypt install.log.gpg > install.log”将加密文件解密。

GnuPGCentOS17.png

18.提示输入私钥密码短语。

GnuPGCentOS18.png

19.提示已经解密完毕,输入“ls”可查看到在当前目录下生成了名为“install.log”的文件。

GnuPGCentOS19.png

20.输入“vi install.log”查看此文件,可正常浏览及编辑。

GnuPGCentOS20.png

21.如需卸载密钥对,输入“gpg --delete-secret-keys ytyzxnet@gmail.com”卸载私钥(必须先卸载私钥,然后才可卸载公钥)。

GnuPGCentOS21.png

22.继续输入“gpg --delete-keys ytyzxnet@gmail.com”卸载公钥。

GnuPGCentOS22.png


转自 http://www.ytyzx.net/index.php/File:GnuPGCentOS22.png

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python的gnupg模块默认使用的是OpenPGP协议,它不支持使用AES算法进行加密解密。不过,我们可以使用Python的pycryptodome模块来实现AES算法的加解密。具体步骤如下: 1. 导入pycryptodome模块和gnupg模块: ```python from Crypto.Cipher import AES import gnupg ``` 2. 创建GPG对象和AES对象: ```python gpg = gnupg.GPG() aes = AES.new(key, AES.MODE_CBC, iv) ``` 其中,`key`为AES算法的密钥,长度必须为16、24或32字节,即128位、192位或256位,`iv`为初始化向量,长度必须为16字节。 3. 使用AES对象的encrypt函数进行加密: ```python ciphertext = aes.encrypt(plaintext) ``` 其中,`plaintext`为要加密的明文。 4. 使用GPG对象的encrypt函数进行加密: ```python encrypted_data = gpg.encrypt(ciphertext, recipients=[recipient], symmetric='AES256') ``` 其中,`recipient`为加密后的密文接收者的指纹,`symmetric`为使用的对称加密算法,这里选择了AES256。 5. 使用GPG对象的decrypt函数获取密文: ```python encrypted_data = gpg.decrypt(ciphertext, passphrase=passphrase) ``` 其中,`ciphertext`为加密后的密文,`passphrase`为加密时设置的密码。 6. 使用AES对象的decrypt函数进行解密: ```python plaintext = aes.decrypt(encrypted_data.data) ``` 完整代码示例: ```python from Crypto.Cipher import AES import gnupg gpg = gnupg.GPG() aes = AES.new(key, AES.MODE_CBC, iv) plaintext = 'Hello, World!' ciphertext = aes.encrypt(plaintext) recipient = 'recipient_fingerprint' encrypted_data = gpg.encrypt(ciphertext, recipients=[recipient], symmetric='AES256') passphrase = 'my_passphrase' decrypted_data = gpg.decrypt(encrypted_data.data, passphrase=passphrase) plaintext = aes.decrypt(decrypted_data.data) print(plaintext) ``` 其中,`key`为AES算法的密钥,长度必须为16、24或32字节,即128位、192位或256位,`iv`为初始化向量,长度必须为16字节,`recipient`为加密后的密文接收者的指纹,`passphrase`为加密时设置的密码。执行以上代码,就可以获取解密后的明文。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值