加密是程序中大家普遍关注的一个话题,从软件本身的反盗版到通讯过程中的数据加密,加密算法是绕不过去的槛。
所谓的加密就是将数据变为看起来杂乱,无法正常读取分析的一种算法。象《大秦帝国》里展示中国古代的三发一至,或者风语者中部族的古老语言,都是一种加密方式。但无论任何加密方式,最终要有一定的办法将其还原回原始内容,没有办法还原回原始内容的加密是毫无意义。
加密在现代计算机里,有许许多多的算法,通用算法就有DES、AES、RSA等等诸多算法。这里面就分为了对称加密和非对称加密算法两类。使用对称加密算法时,加密和还原的用来加密的密钥(即密码)是完全一致的,用同样的密钥利用加密的算法反转数据得到原始内容。而非对称加密,则是加密和解密使用两套不同的密钥(公钥和私钥),一边用公钥加密,另一边用私钥解密,得到原始的内容。
那么另一个问题来了,既然无论何种加密都存在密钥,那么怎么保证这个密钥不被人截获呢?
对称加密由于加密和解密双方都知道密钥,但对于第三方要严格保密,一旦泄密,那么你整个的通讯过程对第三方就变得完全透明了。
中国古代的三发一至,至今都是一种加密通讯参考。它将要加密的内容分成不同的段,从不同的路径发送出去,并从不同的路径接收齐全后再组合在一起,从而保障通讯过程中,万一部拦截,拦截者只能得到部分无意义的内容。
对于对称加密算法,密钥越复杂,破解的难度越高。但就象谍战片中的密码本,一旦被人破解,必然会被破解。定时更换密钥是一种良好的选择。而密钥应通过不同的渠道传递更新,而不是通过原有的加密通道进行,以避免被泄露。
《未完待续》