按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。
对称加密“对称加密”很好理解,就是指加密和解密时使用的密钥都是同一个,是“对称”的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性。
对称加密所使用的算法包括:DES、3DES、AES、DESX、Blowfish、RC4、RC5、RC6,这些算法就可以看成密钥、或者理解为上面的密码本。这些算法也可以称为: “对称加密算法"或者"传统加密算法”,一方使用算法进行加密,然后另一方使用相同的算法进行解密。
非对称加密
如今的网络通信中,显然不可能再使用人工渠道传递密钥,只有通过网络来传递才高效快捷。这样就有了一个矛盾:密钥是用来保证网络传输安全的,这个对于网络安全至关重要的密钥又需要网络来传递给对方。
保存密钥最安全的方式就是不告诉任何人,不进行传递,但对称加密中,解密方必须要得到对应的密钥,这就又要求密钥必须进行传递,可一旦传递密钥就有丢失的风险。这个"鸡生蛋、蛋生鸡"的问题一直困扰着人们。直至出现了一种算法: 这套算法生成的密钥分为两个部分:公钥、私钥。
这个一分为二的密钥对有如下特点:
1.公钥和私钥是一个算法中两个不同、但内在又相关联的参数集合,同时生成,但可以独立使用。
2.公钥加密的数据只有对应的私钥才可以解密(公钥加密后公钥也不能解密)
3.私钥加密的数据也只有对应的公钥才可以解密。
使用非对称加密进行通信
有了非对称加密的公私钥对,这样通信中仅需传递公钥,甚至公钥可以开放给所有人。需要发消息给我的人使用我的公钥加密后发给我,只有我可以使用私钥解密,其他人不可能获知信息的内容。
这只是单方向的加密,双向加密怎么办呢?对方也创建一个公私钥对就可以了。
非对称加密的算法比对称加密要复杂且耗时,位数越多越耗时。因此在实际使用中,一般是先用非对称加密过程传递对称加密的密钥,之后再使用对称加密来保证后续的通信,这样安全性与速度就可以达到了一个平衡,HTTPS 所使用的就是这种方式。