对称加密 、非对称加密
1、对称加密中加密和解密使用的秘钥是同一个;非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密。
2、对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
3、对称加密的安全性相对较低,非对称加密的安全性较高。
对称加密技术
对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密
也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高
对称加密算法在电子商务交易过程中存在几个问题:
1、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施的,所以双方可能需要借助于邮件和电话等其它相对不够安全的手段来进行协商;
2、密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放社会中大量的信息交流;
3、对称加密算法一般不能提供信息完整性的鉴别。它无法验证发送者和接受者的身份;
4、对称密钥的管理和分发工作是一件具有潜在危险的和烦琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。
假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。
常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
非对称加密技术
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
对称加密与非对称加密的区别
1、加密和解密过程不同
对称加密的加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。(因不能当面协商密钥,通常才有邮件、电话方式,一旦被截获【相当于密码本被截获】,如果传输的密文再被截获, 密文和密码本都被截获了,安全性就不存在了)
但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密(公钥传输给用户,密钥始终在自己电脑中,就不存在截获的可能,安全性就高了)。
2、加密解密速度不同
对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。
3、传输的安全性不同
对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。
非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。
.ssh
有关SSH配置信息都保存在用户 家目录下 的 .ssh 目录下 ,这个是个隐藏文件,且是存在 家目录下
.ssh 文件夹里面文件结构
known_hosts
第一次连接其他服务器的时候,会有一个一大串的提示 “Are you sure you want to continue connecting (yes/no)” 我们是否确认要连接到目标服务器。当我们确认后,这个远程服务器的信息就会被记录到我们本地的 ~/.ssh/known_hosts 中(如果一开始不存在则会自动创建),这个文件里面有我们刚刚连接的服务器的信息。
known_hosts 文件每连接一个新的远程服务器都会被追加产生一条新的数据记录。包括远程机器ip
当我们以后再连接之前连接过的目标服务器时,因为 known_hosts 文件中记录了我们曾经连接过,所有就不会在提示询问我们是否要连接了。
ssh 远程 首次连接 会问你是否记录许可 yes,就同意了。就会对应信息 存入 known hosts
可以通过 cat known_hosts 查看这个文件 这个文件是加密的
zen@zen:~/.ssh$ ssh -p 22 ares@172.0.0.100
# 会提示你要录入密码zen@zen:~/.ssh$ exit
# 后面连接还会提示要密码 ,包括scp 远程拷贝 都需要密码
免密码登录 设置
免密码登录 2步骤
- 配置公钥 ssh-keygen 即可生成SSH密钥
- 公钥 id_rsa.pub 公钥 上传到服务器 ssh-copy-id -p port user@remote 可以让远程服务器记住我们的公钥
zen@zen:~/.ssh$ ssh-keygen
# 一路回车# 查看 .ssh 文件 # 最终 .ssh 文件中生成了 私钥:id_rsa 公钥:id_rsa.pub 两个文件 ,known_hosts 是首次连接 yes 生成的
zen@zen:~/.ssh$ ls
# 通过ssh-copy-id 把本地的公钥 copy到 远程服务器上的对应用户下面的 家目录下面的 .ssh 下面的authorized_keys ~/.ssh/auhorized_keys
zen@zen:~/.ssh$ ssh-copy-id -p 22 ares@172.0.0.100
# 提示你 远程到 ares@172.0.0.100 的密码
# 此时 本地exit之后,再远程ares@172.0.0.100就不需要密码了。
有关SSH配置信息都保存在用户 家目录下 的 .ssh 目录下 ,这个是个隐藏文件,且是存在 家目录下
Putty 也可以设置免密码登录的
配置别名
每次输入 ssh -p port user@remote 比较麻烦 可以通过别名记忆,让linux 自己转换 这一串
要在 用户的 家目录 下面 .ssh 下面 创建 config 文件
且在这个config 文件中 配置
Host 别名
HostName IP地址或域名
User 用户名
Port 22
保存之后, 就可以通过 ssh 别名 就实现了 远程登录 scp 同样可以使用
-把远程 家目录下 Desktop/001.py 文件 复制到 本地当前目录下面的 1.py
scp -P xx zen@IP:Desktop/001.py 1.py
scp 别名:Desktop/001.py 1.py