加密的应用

加密的应用

一、实现对称加密

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,但是其为二进制文件。

1.jpg

4 .在 在hostA 主机上导出公钥到babyhanggege.pubkey,如上图。

gpg -a –export -o babyhanggege.pubkey

2.jpg

此时babyhanggege.pubkey中的文件已经是可读的符号了。

 5. 从hostA 主机上复制公钥文件到需加密的B主机上

scp babyhanggege.pubkey 10.1.44.3:

6.  在需加密数据的hostB 主机上生成公钥/ 私钥对

gpg –list-keys

gpg –gen-key

3.jpg

在生成随机数过程中尽量使用终端机来做,必要时需要多敲击键盘和移动鼠标。

7.在hostB 主机上导入公钥

gpg –import babyhanggege.pubkey   (导入密钥时要切换至A主机的密钥所在目录)

gpg –list-keys   (如图所示,此时就生成了两把密钥)

4.jpg

此时我查看B主机的密钥文件,发现并未看到babyhanggege.pubkey的文件,带着疑虑查看了pubring.gpg的二进制文件,在这里找到了答案,原来babyhanggege的公钥已经导进了B主机的pubring.gpg的文件中。(看下图的最后一行,便可找到答案)

5.jpg

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(可以将解密的文件保存下来)

6.jpg

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

7.jpg

 生成随机数: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

8.jpg

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、点击“工具”选项下,用户新建密钥生成向导

9.jpg

2、选择好密钥类型与密钥长度后,进行下一步。

10.jpg

3、名称信息的确认,该步是为私钥加密。

11.jpg

4、点击属性,点击公钥,保存公钥文件。

12.jpg

5.将公钥文件传给所想要连接的主机。

 cat id_rsa_1024.pub > /root/.ssh/authorized_keys

至此即可。

原创文章,作者:178babyhanggege,如若转载,请注明出处:http://www.178linux.com/48771

(0)
178babyhanggege178babyhanggege
上一篇 2016-09-26 07:44
下一篇 2016-09-26 07:44

相关推荐

  • N22-第十一周作业

    第十一周作业 1、详细描述一次加密通讯的过程,结合图示最佳 (1)为了做到数据的安全,应该同时满足 保密性 完整性 可用性 (2)假设A,B通信,A是客户机,B是服务器 a、客户端向服务器端发送自己支持的加密方式,并且向服务器端请求其CA颁发给的证书 b、服务器选择共同支持的加密方式并发送自己的证书; c、客户端收到其证书,并验证证书,证书必须同时满足以下条…

    Linux干货 2016-12-06
  • 网络接口配置bonding

    Bonding 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式 Mode 0 (balance-rr)     轮转(…

    Linux干货 2016-09-09
  • 菜鸟教你如何磁盘分区与创建文件系统以及挂载(1)

    何为磁盘分区,为什么要分区?    计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。 MBR分…

    Linux干货 2016-08-27
  • mysql进阶至mysql备份基础及备份工具

    一、mysql备份、恢复基础 备份:存储的数据副本 还原:把副本应用到线上系统,仅能恢复至备份操作时刻的数据状态。 硬件上的冗余并不能有效恢复逻辑操作上的错误。 备份:数据备份、服务配置文件备份、系统环境备份。程序的运行依赖于一定的系统环境,仅提供数据本身并不能确保恢复数据之后系统可用,数据备份的目的在于确保系统出现不可预料的灾难事故之后能够快速恢复运行,降…

    2016-11-18
  • Linux 内存管理

    1.Linux 进程在内存数据结构      可以看到一个可执行程序在存储(没有调入内存)时分为代码段,数据段,未初始化数据段三部分:      1) 代码段:存放CPU执行的机器指令。通常代码区是共享的,即其它执行程序可调用它。假如机器中有数个进程运行相同的一个程序,那么它们就…

    Linux干货 2015-04-13
  • 描述器

    Edit 描述器 |[Descriptors] 描述器的表现 用到3个魔术方法:__get__()、__set__()、__delete__() 方法用法: object.__get__(self,instance,owner) object.__set__(self,instance,value) object.__delete__(self,instan…

    Linux干货 2017-11-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-26 13:23

    总结的很详细,操作性性很强,值得学习,