常用加密算法解析

今天介绍下工作当中常用的加密算法、分类、应用。

1、对称加密算法

所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

分类

常用的算法有:DES、3DES、AES等。

DES

全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦*的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级*通信中使用,随后该算法在国际上广泛流传开来。

3DES

即TripleDES,是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。

AES

全称为Advanced Encryption Standard,在密码学中又称Rijndael加密法,是美国联邦*采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

优缺点

对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

应用

保存用户手机号、身份证等敏感但能解密的信息

2、非对称性加密算法

与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

分类

常用的算法有:RSA、DSA、ECC等。

RSA

全称为Digital Signature Algorithm,是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

DSA

全称为Digital Encryption Standard,是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

ECC

全称为Elliptic Curves Cryptography,,也叫椭圆加密算法,是一种公钥加密*,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

与RSA,DSA相比,ECC有以下优点:

安全性高,有研究表示160位的椭圆密钥与1024位的RSA密钥安全性相同。

处理速度快,在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快。

存储空间占用小。

带宽要求低.

优缺点

非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。

非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

应用

一般用于签名和认证

3、散列算法

在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“散列”或“消息摘要”(Message digest)。

分类

常用的算法有:MD5、SHA、HMAC等。

MD5

全称为Message Digest Algorithm,即中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

SHA

全称为Secure Hash Algorithm,即安全哈希算法,主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。有SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法,其中SHA-1已经不安全。

HMAC

全称为Hash Message Authentication Code,即散列消息鉴别码,主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。一般的,消息鉴别码用于验证传输于两个共 同享有一个密钥的单位之间的消息。HMAC 可以与任何迭代散列函数捆绑使用。MD5 和 SHA-1 就是这种散列函数。HMAC 还可以使用一个用于计算和确认消息鉴别值的密钥。

应用

效验下载文件正确性,一般在网站上下载文件都能见到

存储用户敏感信息,如密码、 卡号等不可解密的信息

建议

AES采用128为即可,RSA建议采用1024位的数字,ECC建议采用160位。RSA加密字符长度有限制,一般采用AES+RSA方式组合使用。

误区

很多博客把Base64编码也当做一种加密算法来解释,这是不严谨的。Base64是没有可读性,但不代表这个编码就是加密的。加密需要保证没有密钥的人无法解密信息,更无法从密文中破解任何明文信息,但Base64可以很轻松的反编码。另外,Base64编码也显然没有用到密钥,不具有加密算法的安全性,所以,这个误区大家要纠正过来。

上一篇:Z型变换问题


下一篇:Python数据分析之一元线性回归