常见加密方式汇总
一、 背景
随着信息技术的发展,社会进入互联网时代,用户的隐私保护和数据安全日益受到重视,数据加密是这一诉求的重要实现手段,本文介绍将当前常用的数据加密方式并加以对比。
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
二、 对称加密、非对称加密、数据摘要算法
(1) 对称加密
数据的发送方和接收方使用同一个密钥,既可以加密又可以解密,密钥是控制加密及解密过程的指令,算法是一组规则,规定如何进行加密和解密。
其优点为算法公开、计算量小、加密速度快、加密效率高。
其缺点为数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6等。
(2) 非对称加密
指加密和解密使用不同密钥的加密算法,也称为公私钥加密。
假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。
如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。
假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。
由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以通过数字签名确保发送者无法否认曾发送过该信息。
其优点为密钥管理相比对称加密更为容易,也更为安全。
其缺点为加解密速度要远远慢于对称加密。
常见的非对称加密算法有RSA、DSA、ECC等。
(3) 数据摘要算法
数据摘要算法与加密算法的区别在于其不可逆,主要用于数据签名、完整性校验等用途。
常见的数据摘要算法有MD5、SHA系列算法、CRC系列算法等
三、 常用算法
(1) DES/3DE/AES加密
Figure SEQ Figure \* ARABIC 1 DES加密
3DES是以DES为基础的加密算法,使用3个不同的密钥对同一个分组数据库进行3次加密,加密强度更高。
Figure SEQ Figure \* ARABIC 2 3DES加密
AES是取代DES的新对策加密标准,其加密的流程与DES类似,不同的是密钥长度不局限与56位,而是可选128位、192位、256位,其基于Rijndael算法,相比于DES加密,AES具有运行速度快、内存需求低、安全性更强的特点。
(2) MD5、SHA1/SHA256/SHA384/SHA512
MD5、SHA系列算法属于不可逆加密,即无法通过解密算法得到明文,也称为数据摘要算法,不可逆的原因是其属于散列函数,使用的是hash算法,在计算过程中丢失了原文的部分信息,相当于超损压缩。
MD5可将任意长度的信息处理成128位的密文数据,输出的结果具有唯一性。
SHA系列算法由美国国家标准技术研究院制定,其摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、SHA384为48字节(384位)、SHA512为64字节(512位)。
相比于MD5,因为其产生的摘要长度更长,更难发生碰撞,因此相对更加安全,但运行速度也更慢。
不可逆加密常用于数字签名、用户登录、文件校验等用途,比如文件的传输过程中,发送方和接收方可以使用MD5对文件内容得到输出结果并比较,如结果相同则认为文件数据完整。或在用户注册时,在数据库中存储密码的MD5值而不是明文,可以降低数据泄露造成的风险。
MD5、SHA系列算法并非绝对安全的,虽然其不可逆,但实际中用户使用的密码往往较为简单,因为其输出一致性,攻击者可以提前构造一张明文到MD5值的庞大映射表,也称为彩虹表。所以在使用的过程中最好加入一些混淆的过程,比如在明文后缀加复杂字符串,或使用base64编码等。