由于业务安全需要,原来的RSA加密算法中的填充方式要替换为新的,所以最近两天把一些安全知识重新学习了一下。
AES, RSA, MD5, SHA1等等算法,之前只是听说过,然而并不清楚其本质以及使用场景。经过最近阶段的学习,基本上搞清楚了这些概念,因此总结梳理一下:
一、加密 解密 签名 验证签名
加密解密很好理解,就是发送方为了信息的保密性,通过算法将信息加密,发送给接收方。而接收方通过解密算法解出来的过程。就像二战时期,日军发送的无线电信息被盟军截获破解,就是加密算法被破解的缘故。
签名验证签名是这样的,发送方发送信息,并且通过一定的算法进行签名,接收方都过一定的算法进行签名验证,用来确保接收到的信息没有被篡改,也用来保证信息确实是由对方发出的。类型于银行支票的签名,银行通过笔记对票据进行验证。
二、对称加密 非对称加密
加密算法一般分为对称加密和非对称加密。
对称加密就是加密解密都是用同一套密钥。发送方通过输入密钥对信息进行加密,接收方也通过输入密钥对信息解密。使用对称加密,通信的双方要互相知道密钥。
在特定场景下,对称加密并不适合。比如互联网场景,密钥不能通过网络传输,否则可能被截获。 在这样场景下,可以使用非对称加密。非对称加密需要一对密钥,称为公钥和私钥。 信息接收方发送公钥,公钥是可以被任何人知道的。如果需要对接收方发送信息,发送方可以使用公钥进行加密。公钥加密的信息只能使用私钥解密,从而保证通信是安全的。
签名:对信息进行签名可以借鉴非对称加密过程。将非对称加密过程反过来,发送方使用私钥加密,接受对方通过公钥解密,那么就可以确认此信息肯定是由发送方发出的。
对称加密算法包括:DES,AES。一般现在使用AES。
非对称加密算法包括:RSA。
另外MD5, SHA1并不是加密算法,而是信息摘要算法。可以对一段任意长度的信息,生成一段固定长度的摘要。摘要算法不可以逆向。加密解密算法中可以使用摘要算法进行加解密。摘要算法也有个作用:发送接收双发确定一个摘要算法,生成的摘要可以就用来做签名,防止信息篡改。