在当今互联网上,一定要注意信息的安全性,不久前,就发生了一件充值系统被盗的事情,就是因为数据没有加密处理,导致中间有人修改数据盗取巨款同时将破解方法外卖的恶性事件。
什么是加密呢?
举个例子让大家知道什么是加密,什么是黑客。
北京的Bob发了一个快递到广州的Alice,途中经过了上海,上海快递中心出现了一个黑客H,他偷偷打开了Bob给Alice的快递,然后偷偷把里边的衣服剪烂,再按照原样包装好发往广州,可以看到对于这样简单包装的传输在中途是可以偷偷修改里边的东西。
HTTP的数据包是明文传输,也即是如果中途某个黑客嗅探到这个HTTP包,他可以偷偷修改里边包的内容,至于Bob跟Alice是互相不知道这个动作的,因此我们必须要有一个方案来防止这种不安全的篡改行为,有个方法就是加密!
什么是对称加密?
对称加密(Symmetric Cryptography)
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
什么是非对称加密?
接着上面的例子,说明具体过程。
Bob将衣服放到一个保险箱里边锁起来,他打了个电话告诉Alice保险箱开柜密码是1234,而黑客H不知道密码,所以他看不到保险箱里边的东西,Alice收到快递后用预先沟通好的密码就可以打开保险箱了。
这里保护的手段就是Bob对物品进行加密,同时给了告诉Alice解密的方法!
现在的问题是,我们不能通过打电话告诉对方,那应该如何处理呢?
现在要求Bob的密码只能通过快递传给Alice呢?如果Bob直接传密码给Alice,H如果嗅探到这个快递,那H也知道密码了,这就无法保护快递的安全性了。因此还需要有个方案,让Bob能够告诉Alice密码的同时,H又无法查看到Bob跟Alice通信的数据。
非对称加密在这个时候就发挥作用了,来看看怎么回事:Bob拥有两把钥匙,一把叫做公钥,一把叫做私钥。公钥是公开让全社会都知道,没关系,Bob告诉所有人,你们要传递数据给我的时候请先用这个密钥(公钥)去加密一下你们的数据,加密后的数据只能通过Bob私自藏着的私钥才能解密。
回到刚刚例子,Bob先发给保险柜(Bob公钥)给Alice,接着Alice把自己的保险柜(Alice公钥)放到Bob的保险柜(即使用Bob的公钥加密Alice的公钥)里边发还给Bob,接着Bob拿到Alice的数据包后,用自己的私钥解开了外层保险柜(Bob的公钥),拿到了里边Alice保险柜(Alice的公钥)。
此时Alice跟Bob都有了各自的公钥(并且都有他们自己的私钥),接着只要保证每次互相传递数据的时候,把数据放在对方的保险柜里边即可(即每次都用对方的公钥加密数据),这样无论如何,H都无法解开保险柜(因为只有各自的私钥才能解开各自的保险柜)。
如何创建非对称加密?
请查看Java之keytool非对称加密和解密
学习交流,请加群:64691032