网络安全-加密算法

加密算法是网络安全中不可缺少的一部分,那我通常们什么时候需要使用加密算法呢?

加密数据:保证数据的私密性。例如账号以及一些个人信息在传输和存储之前都需要加密处理,这样即使别人拿到数据也只是一堆看不懂的密文。
身份验证:确保访问者为指定的用户或者系统,例如一些网站或者网银需要安装证书才可以使用,这些证书都是由数字证书认证机构(CA)发放的。
数据完整性:防止数据在传输过程中被篡改。
加密算法可以分为:单向加密算法、对称加密算法和非对称加密算法。

单向加密算法

算法不可逆,即通过密文无法还原原始数据。
输入一致,输出必定一致,并且输出长度固定(128位)。
细微的变化会生成完全不同的密文。
一般适用于数据验证,通过再次输入明文,用相同的算法加密,看能否得到相同的密文来判断输入的正确性,例如用户登录密码的验证。可以做到数据加密,但无法保证数据完整性和身份验证。
常见的单向加密算法有:MD5、SHA、HMAC、CRC

对称加密算法

算法可逆,对密文进行解密算法即可得到明文。
速度要比非对称加密算法快。
因为算法是可逆的,所以对称加密算法的安全性就建立在秘钥的基础上,如果A和B的秘钥相同,并且B拿到A传输的密文,那么B就可以将密文解密,所以必须保证所有人的秘钥都不同,这样如果使用者增多,对称加密算法的管理难度就会增加。
常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC4、RC5、RC6。

非对称加密算法

是一对加密秘钥和解密秘钥,A用户秘钥加密后信息,只有A的解密秘钥才能解密,并且知道其中一个并不能算出另外一个。公开的密钥为公钥,不公开的密钥为私钥。
如果加密密钥是公开的,这用于客户给私钥所有者上传加密的数据,这被称作为公开密钥加密(狭义)。例如,网络银行的客户发给银行网站的账户操作的加密数据。如果解密密钥是公开的,用私钥加密的信息,可以用公钥对其解密,用于客户验证持有私钥一方发布的数据或文件是完整准确的,接收者由此可知这条信息确实来自于拥有私钥的某人,这被称作数字签名,公钥的形式就是数字证书。例如,从网上下载的安装程序,一般都带有程序制作者的数字签名,可以证明该程序的确是该作者(公司)发布的而不是第三方伪造的且未被篡改过(身份认证/验证)。
常见的公钥加密算法有:RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法。

你可能感兴趣的:(加密算法)