加密的应用
一、实现对称加密
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.178linux.com/48771
评论列表(1条)
总结的很详细,操作性性很强,值得学习,