?1 概述
工作中,可以用加密的工具對(duì)數(shù)據(jù)進(jìn)行加密,本文介紹了如何用gpg實(shí)現(xiàn)對(duì)稱和非對(duì)稱的加密
2. 對(duì)稱加密
.對(duì)稱加密file文件,選項(xiàng)是-c
gpg ?-c file
這里需要輸入一個(gè)密碼,解密也是用同一密碼進(jìn)行解密
解密文件
gpg ?-o file -d file.gpg
這里的file可以自己指定名稱,-o是生成新文件,-d是解密
注意,雖然可以生成加密文件,但是我的CentOS6出現(xiàn)了如下的三個(gè)報(bào)錯(cuò),第一個(gè)問(wèn)題沒(méi)有解決
[root@localhost ~]#gpg -c aa
#這個(gè)文件沒(méi)有找到不知道從哪里獲取這個(gè)文件
can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
#以下的這兩報(bào)錯(cuò)如果在6的桌面端打開(kāi)終端,在運(yùn)行生成的命令就不會(huì)報(bào)錯(cuò)
Xlib: ?extension "RANDR" missing on display "localhost:10.0".
Xlib: ?extension "RANDR" missing on display "localhost:10.0".
3. 非對(duì)稱加密
使用gpg工具實(shí)現(xiàn)公鑰加密過(guò)程如下
.在hostB主機(jī)上用公鑰加密,在hostA主機(jī)上解密
a.在hostA主機(jī)上生成公鑰/私鑰對(duì)
b.把A的公鑰導(dǎo)出來(lái)
c.把A的公鑰發(fā)送給需要加密數(shù)據(jù)給A的機(jī)器上,如hostB
d.在hostB主機(jī)上用A公鑰加密文件file,并把加密后的file文件發(fā)給A
e.在hostA主機(jī)上解密file
3.1 hostA生成密鑰
gpg ? --gen-key
這一步只需要在需要?jiǎng)e的主機(jī)生成只有自己能加密文件的機(jī)器上才需要生成鑰匙對(duì)
如果只是用其他主機(jī)的公鑰來(lái)機(jī)密文件,該主機(jī)可以不生成自己的公鑰和私鑰對(duì)
這里最后還會(huì)提示輸入一個(gè)密碼,這個(gè)密碼是用來(lái)加密的私鑰的,當(dāng)要解密文件的時(shí)候,要輸入該密碼,建議是8位數(shù)
最后還是需要敲入大量的字符,讓機(jī)器生成隨機(jī)數(shù)。這里建議不要在終端上操作,否則會(huì)很慢,
直接在物理機(jī)上操作,生成密鑰對(duì)的速度就很快
3.2 查看鑰匙對(duì)
生成鑰匙后,在hostA主機(jī)上查看鑰匙對(duì)
查看公鑰列表
gpg ?--list-keys
查看私鑰列表
gpg --list-secret-key
3.3 導(dǎo)出公鑰
在hostA主機(jī)上導(dǎo)出公鑰,命名為sunny.pubkey
這一步一定是在gpg --gen-key生成后,才會(huì)有公鑰可以導(dǎo)出,否則沒(méi)有執(zhí)行g(shù)pg ?--gen-key的話,就沒(méi)有鑰匙產(chǎn)生
一臺(tái)機(jī)器上可以通過(guò)gpg ?--gen-key生成多把鑰匙,然后用gpg -a 可以把所有的鑰匙都導(dǎo)出來(lái)
gpg ?-a --export -o sunny.pubkey
注意,私鑰也可以導(dǎo)出,但是一般不導(dǎo)出來(lái),自己主機(jī)保留
gpg -a --export-secret-keys -o sunny6a.prikey
3.4 發(fā)送公鑰給需要加密的機(jī)器
從hostA主機(jī)上復(fù)制公鑰文件到需加密的B主機(jī)上
scp ?sunny.pubkey ? hostB
3.5 加密文件
使用gpg工具實(shí)現(xiàn)公鑰加密文件
3.5.1 導(dǎo)入鑰匙
在hostB主機(jī)上導(dǎo)入公鑰
gpg ? --import ?sunny.pubkey
注意 其他主機(jī)(如hostA)私鑰也可以導(dǎo)入,方法和導(dǎo)出公鑰一樣,sunny6a.prikey是私鑰名稱,如下
gpg --import sunny6a.prikey
3.5.2 加密文件
用從hostA主機(jī)導(dǎo)入的公鑰,加密hostB主機(jī)的文件file,生成 ?file.gpg
在B上用A的公鑰進(jìn)行加密文件,這樣加密的文件,只有A才能解密,因?yàn)橹挥蠥有自己的私鑰
注意,以下-r 選項(xiàng)后面的key是不帶后綴的公鑰名稱,即用gpg --list-key查看到的uid
gpg ?-e -r ?sunny ? file
3.5.3 發(fā)送加密后的文件給主機(jī)A
復(fù)制加密文件file.gpg到hostA主機(jī)
scp ? file.gpg ? hostA
3.6 解密文件
在hostA主機(jī)解密文件
gpg ?-d file.gpg
gpg ?-o file -d file.gpg
加了-o選項(xiàng)后,可以將解密后的內(nèi)容重定向到新的文件。解密的時(shí)候,系統(tǒng)會(huì)自動(dòng)識(shí)別用該主機(jī)的哪把私鑰進(jìn)行加密
3.7 刪除鑰匙
3.7.1 僅刪除公鑰
.在B上刪除公鑰和私鑰,刪除別的地方導(dǎo)進(jìn)來(lái)的key,這個(gè)步驟是在別的地方導(dǎo)入的時(shí)候做的,
不能直接刪除自己機(jī)器上的公鑰,自己機(jī)器上的公鑰要?jiǎng)h除,首先要?jiǎng)h除私鑰,才能在刪除公鑰
gpg ?--delete-keys wangxiaochun
3.7.2 刪除公鑰和私鑰
如果沒(méi)有導(dǎo)入私鑰,這里就不會(huì)有私鑰,一般私鑰不給別人,是通過(guò)gpg ?--gen-key產(chǎn)生,才會(huì)有私鑰
要?jiǎng)h除有生成公鑰和私鑰對(duì)的機(jī)器
先刪除私鑰
gpg ? --delete-secret-keys sunny
gpg ?--delete-keys ?sunny
4 總結(jié)
gpg加密的選項(xiàng)很豐富,這里僅僅介紹了最基本的選項(xiàng),如需其他內(nèi)容,請(qǐng)用man gpg進(jìn)行查看