GPG加密和MySQL备份
Posted on 日 05 2月 2017 in linux
GPG:
GPG是GNU Privacy Guard的简称,也称为GnuPG,(在ubuntu 和mac os中,配置文件的目录就叫做.gnupg),它是PGP项目的开源版本。它主要用于加密、数字签名、产生非对称密钥。
GPG加密的原理可以理解为发出讯息者以接收讯息者的公钥将讯息加密,接收者则以自己的私钥解密
。发送方和接收方都用GPG产生自己的一对密钥,一个是私人密钥,一个是公开密钥。然后双方互相发送公钥给对方。发送方把信息用对方的公钥加密,接收方收到消息后用对应的私钥解决就可以得到消息原始内容。
下面是一些ubuntu下创建密钥及加密解决的过程
- 生成密钥
gpg --gen-key
回车过后会有一些提示,填写相关信息。最后会输入一个密码,这个密码是在解密文件的时候会输入,一定要牢记
然后他会提示做一些锁事,产生更多的熵。如果产生的熵不够的话,可以按下面来做
sudo apt-get install rng-tools
sudo rngd -r /dev/urandom
- 查看密钥
# gpg -K, gpg --list-publick-keys gpg --list-secret-keys
gpg --list-keys
pub 2048R/BA87EA7D 2017-02-16
uid gpg_test <gpt_test@test.com>
sub 2048R/4FF87A98 2017-02-16
BA87EA7D
是这个公钥的Hash值,在加密的时候需要用到
- 输出公钥
公钥文件(.gnupg/pubring.gpg)以二进制形式储存,armor参数可以将其转换为ASCII码显示。
gpg --armor --output public-key.txt --export [用户ID] # 就是上面提到的字符串
然后生成的public-key.txt就可以发送给别人
- 导入密钥 这一步与上一步相关,要给别人发消息,应该导入别人的公钥
gpg --import 密钥文件
- 加密文件
gpg --recipient [用户ID] --output demo.en.txt --encrypt demo.txt
用户ID是上面提到的接收者公钥的Hash值
- 解密文件 解密别人发给自己的文件
gpg demo.en.txt
需要输入自己私钥的密码,也就是在生成密钥对时输入的密码。
- MySQL备份可以用
mysqldump
命令
mysql -u root -pXXXXX db_name
备份数据库然后再用GPG加密
mysql -u root -pXXXXX db_name | gpg --recipient [用户ID] --output backup.sql --batch --yes --encrypt -
参考链接:
https://zh.wikipedia.org/wiki/GnuPG
https://zh.wikipedia.org/wiki/公开密钥加密
http://www.ruanyifeng.com/blog/2013/07/gpg.html