技术分享 其他 查看内容

对称加密、非对称加密和Hash加密的介绍和区别

老高 | 发布于 2021-10-27 13:33| 浏览()| 评论() | 收藏() | 点赞() | 打印

摘要: 对称加密算法的加密与解密使用的是同样的密钥,加密解密速度较快。但由于需要将密钥在网络传输,所以安全性不高

对称加密算法的加密与解密使用的是同样的密钥,加密解密速度较快。但由于需要将密钥在网络传输,所以安全性不高

非对称加密算法使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢,解决加密解密慢的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。这样既解决了对称加密密钥在网络中传输导致安全性不高的问题,也保证了使用对称加密使加密解密速度较快。

一、对称加密(Symmetric Cryptography

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。它的特点是文件加密和解密使用相同的密钥加密。

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密加密方式,常见的对称加密算法有:DES3DESBlowfishIDEARC4RC5RC6AES

其中数据加密标准(DES)是比较常用的一种对称加密算法,另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高

优缺点

  • 优点是算法公开、计算量小、加密速度快、加密效率高。

  • 缺点在数据传送前,发送方和接收方必须商定好密钥,然后使双方都能保存好密钥。其次如果一方的密钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘密钥,也就是说每一组收发方所使用的密钥都是唯一的,例如:A电脑与B、C、D都有通信,那么A就得存储与B、C、D三台电脑通信所用的密钥。这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担


对称加密算法在电子商务交易过程中存在几个问题:

  1、要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施的,所以双方可能需要借助于邮件和电话等其它相对不够安全的手段来进行协商;

  2、密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放社会中大量的信息交流;

  3、对称加密算法一般不能提供信息完整性的鉴别。它无法验证发送者和接受者的身份,它只能保证数据的保密性;

  4、对称密钥的管理和分发工作是一件具有潜在危险的和烦琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。

假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。

二、非对称加密(asymmetric Cryptography

也叫公钥密码体系公钥加密算法。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把私有密钥对加密后的信息进行解密。甲方只能用其私有密钥解密由其公用密钥加密后的任何信息。

 非对称加密的典型应用是数字签名

 常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

 20200405084418338.png

优缺点

  • 优点是非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。

  • 缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

三、Hash加密算法(摘要算法)

Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

md5是一种不可逆的加密,一定记住是不可逆的。虽然现在很多算法也可以将md5解密出来但是md5还是具有很大程度上的不可逆,而且加大解密难度可以使用双重加密,很多登录的地方用到md5加密,那么有些人会问我用md5加密了服务器怎么解密呢,你要是这么想就错了。登录时输入用户的密码这个密码被md5加密后在服务器也存的是这个md5的字符格式,也就是说服务器的数据库存的就是这个格式的字符串,所以服务器那边为什么要解密呢,只要比较你客户端发送的md5字符串和它数据库字符串进行比较就行了,而且现在APP运营商也很多都不敢保存用户的明文密码,因为保存用户的明文密码是对用户信息的不负责。所以在这里一定记住md5加密是不可逆的。很多网上的解密也只是简单的解密,比如你解密得到9,你知道是1+8=9还是2+7=9还是3+6=9呢,想解密也就不用md5了,现在md5也只是用于数据库存储数据。上面这个1+8=2+7=9的例子就是我们为什么每次用md5加密都加一个salt随机数的原因。

 

像上面讲的对称加密和非对称加密算法都是可以解密的加密算法

对称的加密算法,现在大多用的是AES和DES等,因为不管服务端还是客户端都用的是一个相同的密钥所以可以说是对称加密,比如客户端用这个密钥给一段文字加密服务端收到这段字符串后会用同样的密钥进行解密;

另外一种非对称加密用的多的就是RSA,这个加密之所以叫非对称是因为客户端和服务器用的不是同样的密钥分为公钥和秘钥。打个比方,甲方生成了一对密钥然后把公钥公开提供给乙方也可以是乙1,乙2,乙3...,然后乙方拿着公钥进行加密,甲方拿着秘钥进行解密,支付宝接入就是用的RSA。所以RSA还是用的很普及的,比较适合于一些平台的加密。

常见的Hash算法有MD2、MD4、MD5、HAVAL、SHA

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情