gpg2安装和使用

apt-get 的使用 https://blog.csdn.net/mosquito_zm/article/details/63684608
dpkg 的使用 https://blog.csdn.net/astraylinux/article/details/7039744
gpg2 通常是两个公司之间进行文件加密的常用工具,目的是防止文件泄漏。
要了解什么是GPG,就要先了解PGP。
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。
GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置,请参考Ubuntu网站的介绍。


GPG2加解密步骤


1、查看系统是否安装gpg软件
 rpm-qa│grep gnupg
 显示如下,表示已安装;
 gnupg2-2.0.10-6.el5_10
不同的系统可能使用的命令不一样,所以,要查看当前的系统型号:  命令:  cat /etc/issue  
  

 安装文件之前最好是 root 命令。 sudo su   用来切换最高权限的名称。

gpg2安装和使用_第1张图片

 如果是 Debian 系统,用上边的命令查看是否安装并不好使,需要使用如下命令。

dpkg-query -l | grep gnupg

 


2、如没有安装。请执行rpm –ivhgnupg2-2.0.10-6.el5进行安装 红帽子 可以 这么装。

其他的版本 可以 执行 安装 apt-get install gnupg2 进行安装。



3、生成key;
执行gpg2 --gen-key 按下图显示依次选择 1》加密位数(默认2048)》0(key永不过期)》y

gpg2安装和使用_第2张图片
 


4、然后系统会要求输入ID和mail地址,注释等
gpg2安装和使用_第3张图片

 


5、然后输入key的密码。建议使用复杂密码并请牢记此密码。以后所有文件都需此密码才能解密。选择

gpg2安装和使用_第4张图片
 


6、此时系统会让你移动鼠标产生随机数。至此key产生完成


7、gpg2 –K(此处为大写K)查看生成的key


 


8、导出公钥;将生成的liucheng.key公钥发给B公司

执行gpg2 --export -a liucheng > liucheng.key(test为刚才生成key时输入的用户ID)


 


9、同时会收到B的公钥。将公钥导入需要加密的服务器上
 执行gpg2 --import liucheng.key


执行完成后。通过命令gpg2 –k(此处为小写k)查看公钥是否导入成功。如下图:

 


10、加解密命令:


解密:
gpg2 –d --passphrase 密码 –o /tmp/xxx$FILE
此处密码为之前生成key时输入的密码;/tmp/xxx为输出文件的路径;$FILE为需要解密的文件;
解密:gpg2 -d --batch --passphrase liucheng123 -o /home/liucheng/temp/me.txt /home/liucheng/temp/me.txt.gpp2

 


加密:
gpg2 -e -r USERID -o /tmp/xxx $FILE
/tmp/xxx为输出文件的路径;$FILE为需要加密的文件;USERID可通过gpg2 –k来查看。为红框显示部分。

加密: gpg2 -e -r liucheng -o /home/liucheng/temp/me.txt.gpp2 /home/liucheng/me.txt

批量解密文件:

#!/bin/bash

#cat /root/sftplist.txt|grep -v ^@ | while read Company Program  GPGUSERID DATE;do
Company=$1
Program=$2
GPGUSERID=$3
dateymd=$(date -d ${4}day+%Y%m%d)
#合作方公钥
#B方私钥
GPGPASSPHRASE=
#
UPDIR=/alidata1/sftp/$Company/$Program/upfile/$dateymd
OUTDIR=/alidata1/sftp/$Company/$Program/outfile/$dateymd
RETURNDIR=/alidata1/sftp/$Company/$Program/returnfile/$dateymd
DOWNDIR=/alidata1/sftp/$Company/$Program/downfile/$dateymd
#创建目录                                                                                                                                                
for i in {upfile,outfile,returnfile,downfile};do
	if [ -d /alidata1/sftp/$Company/$Program/$i/$dateymd ];then
        continue
    else
        mkdir -p /alidata1/sftp/$Company/$Program/$i/$dateymd
        directory=/alidata1/sftp/$Company/$Program/$i
        if [ $i == "upfile" -o $i == "downfile" ];then
            chown -R $Company\_$Program\_test:sftpusers $directory
        else
            chown -R wjs_$Company\_$Program\_test:sftpusers $directory
        fi
    fi
done


#对文件加解密处理函数
#settle函数参数 $1-表示对文件加解密以及复制  $2-被处理的文件 $3-处理之后的文件
settle(){
	case $1 in
		decrypt)
			gpg2 -d --batch  --passphrase  $GPGPASSPHRASE -o $3  $2 && mv $2 ${2}.bak;;
		encrypt)
			gpg2 -e -r $GPGUSERID --yes -o $3  $2  && mv $2 ${2}.bak;;
		copy)
			cp -r $2  $3 && mv $2 ${2}.bak;;
		*)
		echo -e "\033[5m\033[31mFiles are encrypted, decrypted, or just copie! \033[0m";;
	esac
}
#判断文件的完整并处理
#dispose函数参数 $1-表示对文件做什么处理  $2-被处理文件目录 $3-处理之后所放文件目录
dispose(){
    FileName=`find $2 ! -regex  ".*\.bak$" -and -type f  -exec basename {} \;`
    for FILE in ${FileName}; do
        TEMPNAME=`basename $FILE`
        MDFILE1=`md5sum $2/$TEMPNAME|cut -c1-32`
        sleep 3
        MDFILE2=`md5sum $2/$TEMPNAME|cut -c1-32`
        if [  -n $MDFILE1 ] && [ $MDFILE1 = $MDFILE2 ];then
        	settle  $1  $2/$TEMPNAME  $3/$TEMPNAME 
			chown -R $Company\_$Program\_test:sftpusers $UPDIR $DOWNDIR
			chown -R wjs_$Company\_$Program\_test:sftpusers $OUTDIR $RETURNDIR
        fi
    done
}


dispose decrypt $UPDIR $OUTDIR & 
#dispose copy $UPDIR $OUTDIR  &
dispose encrypt $RETURNDIR $DOWNDIR &
#dispose copy $RETURNDIR $DOWNDIR &
#chown -R $Company\_$Program\_test:sftpusers $UPDIR $DOWNDIR
#chown -R wjs_$Company\_$Program\_test:sftpusers $OUTDIR $RETURNDIR


你可能感兴趣的:(工具)