简介
做为一个开发人员,了解一些加密算法是很有必要的,通过加密算法,我们能完成数据通信的三个目标,分别为数据的保密性、数据的完整性、源和目标用户的合法性,而常见的加密算法类型大体可以分为三类:对称加密,非对称加密,单向加密
对称加密算法
加密算法与解密算法的秘钥key一致,即加密解密的密钥一致。在通信过程中,数据发送方将原始数据分割成固定大小的块,经过密钥和加密算法逐个加密后,发送给接收方;接收方收到加密后的报文后,结合密钥和解密算法解密组合后得出原始数据。由于加解密算法是公开的,因此在这过程中,密钥的安全传递就成为了至关重要的事了。而密钥通常来说是通过双方协商,以物理的方式传递给对方,然后一旦这过程出现了密钥泄露,则数据内容就会被暴露出来
对称加密算法拥有着算法公开、计算量小、加密速度和效率高得特定,但是也有着密钥单一、密钥管理困难等缺点
常见的对称加密算法:
DES:分组式加密算法,以64位为分组对数据加密,加解密使用同一个算法。
3DES:三重数据加密算法,对每个数据块应用三次DES加密算法。
AES:高级加密标准算法,是美国联邦政府采用的一种区块加密标准,用于替代原先的DES,目前已被广泛应用。
非对称加密算法
非对称加密算法采用公钥和私钥两种不同的密码来进行加解密。公钥和私钥是成对存在,公钥是从私钥中提取产生公开给所有人的,如果使用公钥对数据进行加密,那么只有对应的私钥才能解密,反之亦然。这种简单的非对称加密算法安全性比对称加密算法要高,但是其不足之处在于无法确认公钥的来源合法性以及数据的完整性。
非对称加密算法具有安全性高、算法强度负复杂的优点,其缺点为加解密耗时长、速度慢,只适合对少量数据进行加密
常见的非对称加密算法:
RSA:RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,可用于加密,也能用于签名,此算法能够抵抗目前已知的所有密码攻击。
DSA:数字签名算法,仅能用于签名,不能用于加解密。
DSS:数字签名标准,技能用于签名,也可以用于加解密。
ELGamal:利用离散对数的原理对数据进行加解密或数据签名,其速度是最慢的。
单向加密算法
单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。单向加密经常被使用的原因是,只有暴力破解才有可能解开加密。
注:对于加密算法的无法破解,是指其在空间和时间上不具备实现的条件。如某个加密算法,采用暴击攻击,在现有的计算资源条件下,需要花费50年时间,那么就可以认为其无法破解,再或者,破解的所需代价远比密码所保护的资源更有价值,那么我们也可以说其无法破解。
常见的单向加密算法:
MD5:MD5 其实是一种哈希算法,它实质上是对一段信息产生信息摘要,以防止信息被篡改。严格来说MD5 不是一种加密算法而是一种摘要算法。无论是多长的字符串,MD5 都会输出长度为128字节的一个字符串,转换成16进制就是32个字符。
SHA-1: SHA-1算法是和MD5一样流行的消息摘要算法,但是SHA-1 比MD5的安全性更强。SHA-1会产生一个160位的消息摘要,16进制下就40位字符,因此SHA1是目前最安全的摘要算法。
来源:CSDN
作者:小夏陌
链接:https://blog.csdn.net/qq_22136439/article/details/103803436