GPG对文件加解密的简单实现

解密时如何覆盖已经存在的解密后文件,而不是弹出询问框是否覆盖

初识GPG

首先下载gpg套件,https://gpgtools.org/
安装完成后首先建立公私钥,建立好后如下图:
这里写图片描述

加解密实现

gui加解密

最简单的验证方法就是通过gpg的gui进行对文件的加解密,就是在要加密的文件上右键,选择服务,选择open pgp:encrypt file,然后会跳出一个弹框,选择密钥,输入密码即可成功加密,解密的话直接双击刚才加过密的文件即可

生成密钥

gpg --gen-key

输入真实姓名和邮箱以及密码就会创建成功了

命令行方式加解密

加密命令一:把桌面上报表.xlsx文件用xmliu的公钥进行加密

gpg --recipient xmliu --output aa.xlsx --encrypt Desktop/报表.xlsx

解密命令一:

gpg --local-user xmliu --output aa2.xlsx --decrypt aa.xlsx
gpg:4096 位的 RSA 密钥加密,钥匙号为 DC1CCF1EA53BE721、生成于 2018-03-08
      “xmliu (xmrp) <diyangxia@163.com>”

加密命令二:

gpg -e -r xmliu Desktop/ab.txt

然后在同目录下会生成一个加密后的文件,文件名为ab.txt.gpg

解密命令二:添加-o参数,就是output的意思,不加的话默认是不输出到文件,直接输出到控制台显示出来

gpg -o Desktop/ab.txt -d Desktop/ab.txt.gpg

正常来说,加解密不应该在同一个终端进行,所以为了测试方便,把刚才加密后的文件ab.txt.gpg通过scp上传到namenode上,也就是局域网内的另外一台机器

然后在namenode上进行对该文件的解密
首先需要在本机上导出私钥
导出私钥命令:–export-secret-keys后面需不需要加密钥id还不太清除,不过在钥匙环里只有我这一个密钥的时候加不加都没有影响

gpg --armor --output private-key.txt --export-secret-keys

按回车输入密码

顺便看看导出公钥的命令

gpg --armor --output public-key.txt --export xmliu

然后在namenode上导入私钥:

gpg --import private-key.txt

执行解密命令

gpg -d Desktop/ab.txt.gpg

这里写图片描述
输入密钥的密码即可

这里如果想做成解密自动化的话,可以使用passphrase命令,为了不产生交互,可以把解密密钥的密码设置成空,在密钥编辑模式下输入:

password # 如果提示要有私钥才能这么做。就说明这个密钥没有私钥

如果不设置空的话,操作方法参考这里 gpg 自动解密
以及解决 crontab 下运行 gpg 文件加解密问题

echo "password" | gpg --batch --passphrase-fd 0 --output <outputFile> --decrypt <decryptFile.gpg>

另外一种方法,参见烂泥:gpg加解密软件学习

gpg –no-use-agent –passphrase=hahaha -q –no-tty -d file.txt.gpg

查看密钥列表:

gpg --list-key 

私钥列表:

gpg --list-secret-key

删除指定密钥,删除公钥前要先删除私钥:

gpg --delete-key

删除私钥:

gpg --delete-secret-key xmliu

信任度设置

关于对银行提供的公钥进行信任度处理的步骤:

方法一

1、导入公钥

gpg --import example.public

2、编辑公钥,进入密钥编辑模式

gpg --edit-key example

3、进入gpg编辑模式
  3.1 签名

gpg> sign  # 使用已有的密钥对导入进来对密钥进行签名

  3.2 信任度设置

gpg> trust  # 选择信任度,一般4或者5

  3.3 保存

gpg> save  # 保存退出编辑模式

方法二

直接使用参数来强制信任

gpg -r mygpg -e abc.txt --trust-model always

经测试,–trust-model always这个参数无效,也就是方法二无效

参考链接

[1]. GPG入门指南(加密/签名)
[2]. GPG入门教程
[3]. GPG 加密解密简明教程
[4]. 使用 GPG 对数据进行加密解密签名
[5]. 使用GPG对文件进行加密解密批处理

猜你喜欢

转载自blog.csdn.net/diyangxia/article/details/79487319
今日推荐