1. 程式人生 > >安全與加密-使用gpg實現加密與解密

安全與加密-使用gpg實現加密與解密

cal 分享圖片 進行 imp rds 根據 輸出 mon -o

對稱加密算法


加密和解密使用同一個密鑰

常見的算法:

DES,3DES,AES,Blowfish,Twofish,IDEA,RC6,CAST5

? 特性:

1、加密、解密使用同一個密鑰,效率高

2、將原始數據分割成固定大小的塊,逐個進行加密

? 缺陷:

1、密鑰過多

2、密鑰分發

3、數據來源無法確認


非對稱加密算法


公鑰加密:密鑰是成對出現

? 公鑰:公開給所有人;public key

? 私鑰:自己留存,必須保證其私密性;secret key

? 特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然

功能:

? 數字簽名:主要在於讓接收方確認發送方身份

? 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方

? 數據加密:適合加密較小數據

? 缺點:密鑰長,加密解密效率低下


常見的算法:

RSA(加密,數字簽名),

DSA(數字簽名),

ELGamal


來查看本機系統中ssh中的密鑰都長啥樣呢。pub結尾的就是公鑰,key結尾的就是私鑰

#ls /etc/ssh/

ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub

ssh_config ssh_host_dsa_key ssh_host_key ssh_host_rsa_key


查看系統中密碼加密算法

#authconfig --test|grep password

shadow passwords are enabled

password hashing algorithm is sha512


常見加密算法工具

md5: 128bits、 sha1: 160bits、 sha224

sha256、 sha384、 sha512


? 常用工具

md5sum

sha1sum

sha512sum

openssl

gpg

? rpm -V

需要先導入光盤中的GPG-KEY:

#rpm --import /dvd/RPM-GPG-KEY-CentOS-6

或安裝好的系統的

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#rpm -K /dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm

/dvd/Packages/kernel-2.6.32-696.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK


可以利用加密算法對文件進行計算以便發現是否被篡改

md5sum --check 保存的計算結果文件

#sha512sum --check file.sum

b: FAILED

sha512sum: WARNING: 1 of 1 computed checksum did NOT match


使用gpg實現對稱加密與解密

? 對稱加密file文件

#gpg -c sshd_config

技術分享圖片技術分享圖片

輸入2次密碼之後,會生成一個sshd_config.gpg


#file sshd_config.gpg

sshd_config.gpg: data


解密此加密過的file,輸入正確的密碼即可

-o 是指定輸出位置,必須放在前面。

#gpg -o /tmp/sshd -d sshd_config.gpg


使用gpg工具實現非對稱公鑰加密與解密


#gpg --gen-key

gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want: 選擇加密方式

(1) RSA and RSA (default)

(2) DSA and Elgamal

(3) DSA (sign only)

(4) RSA (sign only)

Your selection? 1

RSA keys may be between 1024 and 4096 bits long.選擇加密長度

What keysize do you want? (2048) 默認回車

Requested keysize is 2048 bits

Please specify how long the key should be valid.選擇密鑰有效期

0 = key does not expire

<n> = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0) 1y

Key expires at Sun 13 Jan 2019 08:02:46 PM CST

Is this correct? (y/N) y 是否確認以上信息

GnuPG needs to construct a user ID to identify your key.

Real name: gpg 保存一個名字

Name must be at least 5 characters long 至少需要5個字符

Real name: gpg-key-a

Email address: [email protected] 郵件地址

Comment: 備註

You selected this USER-ID:

"gpg-key-a <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O 保存是O

再接輸入2次密碼

然後,加密過程就根據加密長度,會讓你隨機輸入字符,總這就是你不斷的敲東西啦。可以開多個終端窗口,批量發送信息。挺有意思的。

這個操作在圖形界面下只需要動動鼠標就好了

技術分享圖片技術分享圖片

生成了一對密鑰。

#ls ~/.gnupg/

gpg.conf private-keys-v1.d pubring.gpg pubring.gpg~ random_seed secring.gpg trustdb.gpg

pubring.gpg 公鑰

secring.gpg 私鑰

#gpg -k

/root/.gnupg/pubring.gpg

------------------------

pub 2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid gpg-key-a <[email protected]>

sub 2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


導出公鑰

#gpg -a --export -o gpg-a-pubkey


在另外一個系統導入公鑰

#gpg --import gpg-a-pubkey

#gpg -k 能看到導入的公鑰

/root/.gnupg/pubring.gpg

------------------------

pub 2048R/4CBA6F6A 2018-01-13 [expires: 2019-01-13]

uid gpg-key-a <[email protected]>

sub 2048R/215FAF14 2018-01-13 [expires: 2019-01-13]


加密文件

#gpg -e -r gpg-key-a gpg.conf -r 是指定加密的公鑰名


回到導出公鑰的主機,執行解密

#gpg -d gpg.conf.gpg

技術分享圖片技術分享圖片

成功

總結,用你的公鑰來加密文件,只有你的私鑰才能解密。安全性提高。


安全與加密-使用gpg實現加密與解密