生在互联网的时代最不安全的就是信息,一不小心内裤都可能被人扒了,是时候了解下密码学知识了。

概述

对信息加密不只现代社会有需求,古代也有。例如我们祖先使用藏头诗,绘画等方式,西方使用错位字母法,达芬奇密码盒等方式。只是现在生在互联网的时代信息更容易泄露和扩散,对信息的安全性提出了更高的要求。

加密算法分类

按照是否可逆分为:

  • 单向加密
    单向加密是不可逆的,也就是只能加密,不能解密。有同学要说了:加了密不能解密还有个屌用?其实在某些场景下是非常有用的,其中最常见的就是我们在某个平台注册用户时候提交的用户名和密码,平台后端得到的是经过单向加密的用户名和密码信息,这样不仅可防“家贼”获取注册用户信息,也可防止数据库被撞库后的密码泄露问题。
  • 双向加密
    双向加密顾名思义就是可加密也可解密的算法,其中又分为对称加密非对称加密。通常意义上的加密均指双向加密,毕竟大家加密信息只是为了传输或者保存,最后还是要使用这个信息的。

常见加密算法

单向加密

1 MD2MD3MD4MD5 算法(MD表示Message Digest )

简介
这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron Rivest(RSA公司)在1992年提出,被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5 都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。

应用
在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为 .md5或.md5sum),这样接收者在接收到文件后,就可以利用与 SFV 类似的方法来检查文件完整性,绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,另外,它也是目前计算机犯罪中数据取证的最常用算法。

2 SHA1、SHA256、SHA384、SHA512(SHA表示Secure Hash Algorithm)
简介
SHA是由美国专门制定密码算法的标准机构—— 美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位)。与MD5相比,由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。但同时也正因为数据摘要长度更长,速度相应的也更慢。

应用
SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。

3 CRC8、CRC16、CRC32(CRC表示Cyclic Redundancy Check)

简介
CRC(循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数表示。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。

应用
WinRARWinZIP 等软件中,也是以 CRC32 作为文件校验算法的。一般常见的简单文件校验(Simple File Verify – SFV)也是以 CRC32算法为基础,它通过生成一个后缀名为 .SFV 的文本文件,这样可以任何时候可以将文件内容 CRC32运算的结果与 .SFV 文件中的值对比来确定此文件的完整性。

对称加密

简介
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着泄漏信息,所以密钥的保密性对通信性至关重要。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性,缺点就是管理秘钥成本太高,从而导致实际使用过程中的安全性降低。
常用算法
DES,3DES,TDEA,Blowfish,RC5,IDEA,AES

非对称加密

简介
非对称加密算法需要两个密钥:公开密钥(public key)私有密钥(private key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:
1 A生成一对密钥并将其公钥向B公开;
2 B使用该密钥对机密信息进行加密后再发送给A
3 A接到信息后用自己的私钥对加密后的信息进行解密。

常用算法
RSA、Elgamal、背包算法、Rabin、HD、ECC(椭圆曲线加密算法)