目前最安全的普遍应用于网络安全的加密算法,比较难理解,即使读了很多声称很通俗的文章。
其实可以用一个比喻来解释,我觉得这个比喻很好,所以记录一下。
假设每个参与通信的对象都有一个钥匙,一把锁。第一次通信时,互相把自己的锁发给对方。给对方发数据时,用对方的锁把数据(下称纸条)放到盒子里并给锁起来(加密),然后发送出去。这样的话,传送过程中任何监听到这段数据的“坏人”,因为没有钥匙,所以无法打开盒子,也就看不到纸条内容。而只有目标对象才能打开盒子,才能看到盒子里的纸条内容。大致原理就是这么简单。
至于怎么实现钥匙和锁,怎么保证锁不被轻易打开,那就是数学上的技巧了,就像是99+1=100,那已知和为100,得试很多次才能枚举到99+1这个组合。数如果足够大,128位,甚至256位的话,就很难了。当然这只是个比喻。