白话加密算法

对称加密算法

小A想给女同学小B传纸条,但是又不想让别人看到。小A想了个办法,他找了盒子,买了一个带两把钥匙的锁,然后把其中一把给了小B,如果小A想给小B传纸条,他可以把纸条放在盒子里,用锁锁上,然后寄给小B。小B拿到盒子后,用同样的钥匙把锁打开,这样就看到小A写的纸条了。

如果把上锁和开锁视为加密解密,因为两边钥匙是一样的,因此这种方式就被视为“对称加密”。

DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。都属于对称加密算法。


非对称加密算法


小A和小B相互之间传纸条,被同学小C看在眼里,也想用同样的方式给小B传纸条,于是他也买了带两把钥匙的锁,然后将一把钥匙给了小B。这样小B就有了两把钥匙了。过了一段时间,因为可以不被家长和老师看到自己的隐私,所以这种方式在同学之间流行起来。但是,假如一个班级里有40个学生,那么总共需要有多少把钥匙呢?答案是 40 * (40 - 1)= 1560。呵呵,每个人上学时都要背一书包钥匙,这可是件麻烦事。另外还有一个头疼的问题,如果有人想给其它学校的同学发私密消息,哪怕只有一句话,也要将钥匙亲自送过去或者通过邮寄,不仅麻烦,而且不安全,谁知道钥匙会不会被别人中途偷走或者偷偷配一把呢。
小A又想了个办法,用这个办法可以造了一把被称为’私钥‘的钥匙,然后可以用私钥再配另外一把被称为’公钥‘的钥匙。公钥仅可以上锁,但不能开锁;公钥上的锁,仅可以被配套的私钥打开。当小A和小B想说悄悄话时,他们先互相交换公钥,小A用小B的公钥给发给她的消息上锁,然后发给小B,小B收到后,可以用她的私钥打开。反过来小B用小A的公钥给发给小A的消息上锁,小A收到后,再用小A自己的私钥打开。在他们通信结束后,可以把公钥丢掉即可。下次需要通信时再交换。这样大家都不需要保留很多钥匙。而且也不怕别人复制公钥,因为只有私钥才开打开锁。


不过这种方式也有个缺点,上锁和开锁太麻烦了,原来用对称密钥只需要1秒钟就可以上锁、开锁。现在用非对称密钥,却需要1分钟。不过小A还是有办法,他在给小B通信时,首先配一对临时的对称密钥,再把一把密钥给小B发过去,之后他俩之后就可以用对称密钥交换消息了,当通信结束后,再把对称密钥扔掉。这样就两全其美了。


因为两把钥匙不一样,所以这种方式被称为’非对称加密算法‘


RSA、Elgamal、背包算法、Rabin、D-H、ECC都是非对称加密算法,其中RSA应用最广泛。

猜你喜欢

转载自rockis.iteye.com/blog/1874406