加密算法浅析

加密算法:

很多的工程应用中,都需要进行加密,尤其是在通信过程中,如果通信的内容被敌人或者不法份子解析到,那么将会造成巨大的损失。因此,明文是不可取的。现在的很多的网站,在访问的时候,也会有一层加密墙,也是为了网络安全考虑的。

对称加密与非对称加密:

最常提的加密算法是对称加密和非对称加密,对称加密里面,加密和解密用的是同一个密钥,很简单,速度快,效率也很高。当然,密钥的长度可以决定解密的难度,但是同时增加了解密的时间,这里存在一个trade-off。例如,如果密钥只有1bit,那么黑客们试完了0再试1就可以把密文解析出来。与此同时,对称加密的另外一个隐患就是,往往密钥是通过邮件进行传输,传输的过程中很容易被黑客拦截。

常见的对称加密算法有DEA,IDEA,AES等。

非对称加密,与对称加密不同的是,它会产生一对密钥,分别称为“公钥”和“私钥”,私钥由一方保管。所谓的非对称,就是公钥加密,私钥解密;私钥加密,公钥解密。比如你现在要和银行进行通信,银行本地会产生一对密钥,它把公钥发送给你,私钥留在自己的手中,你收到公钥之后,用公钥把自己的信息进行加密,加密完成之后,再传送给银行,银行再用手上的私钥解密。这种方式很明显就安全了,起码是不怕被拦截的,因为即使黑客拦截到密文,他没有私钥,也是不可以解密的。

最常见的非对称加密算法是RSA,还有美国国家标准局提出的DSA。

非对称加密虽然安全,但是也有问题,就是比较慢,因此,最常用的加密方式,是结合对称加密和非对称加密。

二者结合的加密方式:

使用非对称加密对对称加密的密钥进行加密,然后,用对称加密的密钥对明文进行加密。

这里还是使用和银行通信进行举例,如果用户A想和银行进行通信,那么他要经历以下过程。

1,A的本地浏览器会产生对称密钥。

2,A向银行请求公钥。

3,银行发来公钥,A用这个公钥给自己的对称密钥加密。

4,A将加密后的密钥发给银行。

5,银行收到后,用自己手上的私钥把对称密钥解密。

6,A和银行之间就可以使用对称密钥进行加密解密了。

Hash算法:

Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标的信息。

我们每个人的名字是有很大几率重名的,但是,两个人的指纹完全一样却是几乎不可能的。Hash也称为散列算法,就是要给每一个文件加上一个数字指纹。它们之间的碰撞(Collision)概率极小,但也不是说不存在。

常见的hash算法有MD2,MD4,MD5,HAVAL,SHA-1,SHA-2等等。

Hash的小知识:

现在很多的登录网站都是采取的hash加密,也就是数据库里并不存储具体的密码是什么,而只是存储密码的hash值,这个时候,如果你忘记了密码,选择找回,很多时候服务器是很难把密码返回给你的,因为它也推不出来你的密码,一般都是让你重新进行设置。

Java里面的hashmap也是对key进行hash计算。

MD5是128bit的。

猜你喜欢

转载自blog.csdn.net/Bubbler_726/article/details/82625224