工作中需要使用一种加密算法,来验证消息的来源,故借此了解下这个专题
常见的加密算法可以分为三类:对称加密,非对称加密,哈希
首先是对称加密,即加密和解密使用相同的秘钥(K),优势在于速度快,当 K 很长时候,破解难度异常大,缺点是加密通路有 N 条,比如 Encrypt(A,B)和 Encrypt(B,A)是两条加密通路,则需要 N 个秘钥,其中 A,B 分别获有自己的和对方的秘钥,这就带来了秘钥泄露的风险,如果多个通路公用一个秘钥的话,一旦泄露,保密性也就无从谈起
常见的加密算法有:AES,DES,3DES,Blowfish,IDEA,RC4,RC5,RC6
接下来是非对称加密,即加密和解密使用不同的秘钥(K,K’),又称为公钥和私钥,使用公钥进行加密,使用私钥进行解密,优势在于私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息,缺点在于速度慢
常见的非对称加密算法有:RSA,ECC,DSA,Diffie-Hellman,EI Gamal
最后是哈希算法,它是一种单向的算法,即可以将目标信息通过 Hash 算法生成具有一定长度的 Hash 值,却不能通过这个 Hash 值从新获得目标信息,因此常用于不可还原的密码存储,信息完整性校验等
常见的哈希算法有: MD5,SHA,MD2,MD4,HAVAL
由于项目的本身需要,加密端在 PC,解密端在移动设备,且需要根据加密消息进行相关有效性验证,故最终选择 ECC 算法来