Gpg4win&Kettle文件加密、解密组件的使用
Kettle是一个很强大的开源的数据ETL工具,并且可以与大数据平台整合,直接将关系型数据库中的数据接入到Hadoop平台上。
在对数据文件进行操作的时候有些场景可能需要对数据文件进行加密,以保证数据的安全性,而Kettle刚好提供了文件加密组件用PGP加密文件,这个组件在作业/文件加密模块下,使用的加密方式是GPG加密。
所以在介绍Kettle加密文件之前,先介绍一下GPG这个软件:
GPG加密软件的使用
GPG,全称GnuPG,根据GPG官网的说法,是商业加密软件PGP的免费版,可以对数据和通信进行加密和签名,并具有多功能密钥管理系统。
GPG提供了非对称加密的方式,即加密和解密使用的是不同的密钥(分别叫公钥、私钥),公钥只能用于加密,不能解密,私钥可以解密。顾名思义,公钥是可以共享给别人的密钥,而私钥则是需要自己好好保护的密钥。别人使用公钥对要发送给你的数据进行加密,你收到加密后的密文后就可以拿私钥对该密文进行解密,由于私钥只在自己手中,就算是黑客也没办法获取密文中的真实数据,可以保证信息的安全传输。
在Windows下安装GPG加密软件
Windows下需要安装Gpg4win。
下载Gpg4win安装程序后,双击安装:
只勾选第二个选项(注意:XP系统下第二个选项不可选,需要勾选第三个选项):
下一步,默认安装位置安装。
安装完成,桌面上会多出一个图标(密钥管理器):
双击这个图标打开密钥管理器:
首先需要创建一个密钥对,点击新建密钥对按钮:
输入相关信息,下一步:
点击创建:
然后会弹出一个输入框,需要给私钥设置一个保护密码:
如果你设置的密码不够复杂的话,会弹出一个警告,点击Take this one anyway即可:
创建完成:
可以在密钥列表中看到新建的密钥对:
密钥的导入与导出
- 导出密钥
选中密钥对,鼠标右键即可弹出菜单,第一个导出只是导出公钥,如果想要导出私钥,需要选择下面的导出绝对密钥选项: - 导入密钥
点击菜单栏的导入按钮(示例是一个绝对密钥文件的导入):
点击是修改密钥的信任级别为无限制,关于信任级别的作用后面会有提到。删除私钥保护密码
文件加密解密操作这里就不再介绍,密钥管理器界面上有操作按钮。
刚刚新建的密钥对是设置了私钥保护密码的,解密的时候就需要输入保护密码,为了方便操作,可以将保护密码去除掉。
右键要去掉私钥保护密码的密钥,选择更改密码句:
输入原密码:
留空,直接OK:
点击Yes:
再次直接OK:
再次YES:
密码去除成功:
此后再去解密文件就不需要输入保护密码了。
关于GPG软件的其它进阶操作这里就不再介绍。
Kettle文件加密组件的使用
打开Kettle,新建一个作业[Ctrl + Alt + N],将核心对象下的文件加密文件夹下的用PGP加密文件组件拖到右侧,组成一个简单的流程:
为了操作方便,先双击作业空白处配置两个参数(源文件夹和目标文件夹):
然后双击用PGP加密文件组件,打开配置页面:
最上面GPG文件路径,是设置gpg.exe
这个文件路径的,如果是默认位置安装的话就是图示的这个位置;
源文件/文件夹和目标文件/文件夹分别填写上刚刚设置的参数项;
通配符设为.*
表示对源文件夹的的所有文件都进行加密操作:
配置完以后,点击源文件/文件夹后面的添加按钮:
然后需要填写用户ID,用户ID即为GPG密钥管理器密钥列表中的名称列:
切换到目标文件选项卡,勾选上创建目标文件夹选项,这样如果目标文件夹不存在,Kettle会自动创建目标文件夹;下方还可以配置如果目标文件已存在的处理方式,这里我选择的是覆盖已存在文件。
然后就可以测试文件加密了,向待加密文件夹里放几个文件:
跑一下加密流程:
看一下待解密文件夹:
图片已经不可查看,文件加密成功!
Kettle文件解密组件的使用
新建一个作业[Ctrl + Alt + N],将核心对象下的文件加密文件夹下的用PGP解密文件组件拖到右侧,组成一个简单的流程:
同样的,为了操作方便,先双击作业空白处配置两个参数(源文件夹和目标文件夹):
与加密类似,需要配置gpg文件路径,源路径和目标路径,密钥不用填写:
目标文件夹选项卡也与加密类似:
配置完成后,确定,保存,即可开始运行解密流程(如果未去除私钥保护密码,则第一次运行会弹出输入密码窗口):
查看已解密文件文件夹:
文件解密成功!
使用Kettle进行文件加密、解密注意事项
加密报错:Error running command: gpg: B3CC28EC0344DA15: There is no assurance this key belongs to the named user
则可能是因为该密钥信任级别较低,这个时候就需要修改一下密钥的信任级别或者进行认证。
- 方法一:使用密钥管理器可以右键要认证的密钥,点击认证,不过需要至少已经存在一个信任级别为5级的密钥才能认证。
- 方法二:使用CMD命令修改密钥信任级别。打开cmd窗口,进入gpg.exe所在目录,执行
gpg --edit-key staroon
,staroon是想要修改信任级别的密钥的密钥ID,然后输入trust回车,再输入5回车,再输入y回车,最后输入save保存,即可:
认证以后再回到密钥管理器就可以看到密钥的认证级别已变为认证的,Kettle就可以正常加密了: