加密的應用
一、實現對稱加密
1、openssl enc
man enc
算法:3des, aes, blowfish, twofish
加密操作:openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密操作:openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
2、gpg
對稱加密file 文件
gpg -c file
ls file.gpg
在另一臺主機上解密file
gpg -o file -d file.gpg
使用gpg實現公鑰加密
1. 在 在hostB 主機上用公鑰加密,在hostA 主機上解密
2. 在 在hostA 主機上生成公鑰/ 私鑰對
gpg –gen-key
3. 在hostA 主機上查看公鑰
gpg –list-keys 此時的公鑰文件為pubring.gpg,但是其為二進制文件。
4 .在 在hostA 主機上導出公鑰到babyhanggege.pubkey,如上圖。
gpg -a –export -o babyhanggege.pubkey
此時babyhanggege.pubkey中的文件已經是可讀的符號了。
5. 從hostA 主機上復制公鑰文件到需加密的B主機上
scp babyhanggege.pubkey 10.1.44.3:
6. 在需加密數據的hostB 主機上生成公鑰/ 私鑰對
gpg –list-keys
gpg –gen-key
在生成隨機數過程中盡量使用終端機來做,必要時需要多敲擊鍵盤和移動鼠標。
7.在hostB 主機上導入公鑰
gpg –import babyhanggege.pubkey (導入密鑰時要切換至A主機的密鑰所在目錄)
gpg –list-keys (如圖所示,此時就生成了兩把密鑰)
此時我查看B主機的密鑰文件,發現并未看到babyhanggege.pubkey的文件,帶著疑慮查看了pubring.gpg的二進制文件,在這里找到了答案,原來babyhanggege的公鑰已經導進了B主機的pubring.gpg的文件中。(看下圖的最后一行,便可找到答案)
8.用從A主機導入的公鑰,加密hostB主機的文件file,生成file。gpg
命令:gpg -e -r babyhanggege f1
9.復制加密文件到hostA主機
scp f1.gpg 10.1.44.2: 默認拷貝至A主機的家目錄下
10.在hostA主機解密文件
gpg -d f1.gpg (只能進行查看)
gpg -o f1 -d f1.gpg(可以將解密的文件保存下來)
11.刪除公鑰和私鑰
A主機上
gpg –delete-secret-keys babyhanggege
gpg –delete-keys babyhanggege
經試驗要刪除兩個密鑰,必須先刪除私鑰,才能刪除公鑰!
B主機上
gpg –delete-secret-keys hostB
gpg –delete-keys hostB
gpg –delete-keys babyhanggege (我們僅從A主機上導來了babyhanggege的公鑰)
二、實現單向加密
1、openssl dgst
openssl dgst -md5[-hex] /PATH/SOMEFILE
openssl dgst -md5 testfile
2、md5sum
md5sum /PATH/TO/SOMEFILE
3、sha1sum
4、sha224sum
5、sha256sum
三、生成密鑰對兒
1、生成私鑰
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077;openssl genrsa -out key.pri -des 2048)
2、從私鑰中提取出公鑰
openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE
四、其他
生成用戶密碼:
passwd 命令:man sslpasswd
openssl passwd -1 -salt SALT( 最多8 位)
openssl passwd -1 –salt centos
生成隨機數:man sslrand
openssl rand[-out file] [-randfile(s)] [-base64] [-hex]num
NUM: 表示字節數;-hex 時,每個字符4 位,出現的字符數為NUM*2
五、基于key驗證
情形一、linux主機之間的ssh連接
A主機使用SSH去連接B主機
第一次連接時A主機會將B主機的/etc/ssh/ssh_host_rsa_key.pub中公鑰拷貝至A主機自己的/root/.ssh/known_hosts,等下次連接時,B用自己私鑰加密一個數據包給A時,A用此公鑰去解密A用自己私鑰加密的內容,如果能夠解密,那么A會信任確實是之前的B。
1. 在客戶端生成密鑰對兒
ssh-keygen -t rsa [-P ''] [-f “/root/.ssh/id_rsa"]
#ssh-keygen –t rsa –P ‘’ -f “/root/.ssh/id_rsa”
我在centos7上直接ssh -keygen
2. 把公鑰文件傳輸至遠程服務器對應用戶的家目錄
ssh-copy-id [-i [identity_file]] [user@]host
ssh-copy-id -i ./sshd/id_rsa.pub babyhanggege@10.1.44.3
再次連接時就會發現已經不需要密碼了。
只要將公鑰文件任意傳送給別的機器即可,實現連接任意機器無需密碼。
3.添加口令
ssh-keygen -p
4.啟用代理,讓代理幫助記憶口令
情形二、Windows下xshell基于key驗證
1、點擊“工具”選項下,用戶新建密鑰生成向導
2、選擇好密鑰類型與密鑰長度后,進行下一步。
3、名稱信息的確認,該步是為私鑰加密。
4、點擊屬性,點擊公鑰,保存公鑰文件。
5.將公鑰文件傳給所想要連接的主機。
cat id_rsa_1024.pub > /root/.ssh/authorized_keys
至此即可。
原創文章,作者:178babyhanggege,如若轉載,請注明出處:http://www.www58058.com/48771
總結的很詳細,操作性性很強,值得學習,