全部加密算法及对称加密和非对称加密分类

 对称加密:双方使用的同一个密钥,既能够加密又能够解密,这种加密方法称为对称加密,也称为单密钥加密。html

优势:速度快,对称性加密一般在消息发送方须要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。git

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

在对称加密算法中经常使用的算法有:DES、AES等。数据库

AES:密钥的长度能够为12八、192和256位,也就是16个字节、24个字节和32个字节安全

DES:密钥的长度64位,8个字节。工具

非对称加密:一对密钥由公钥和私钥组成(可使用不少对密钥)。私钥解密公钥加密数据,公钥解密私钥加密数据(私钥公钥能够互相加密解密)。性能

私钥只能由一方保管,不能外泄。公钥能够交给任何请求方。测试

在非对称加密算法中经常使用的算法有: 优化

RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法)。
使用最普遍的是RSA算法,Elgamal是另外一种经常使用的非对称加密算法。网站

缺点:速度较慢

优势:安全

 

1.分类

加密算法首先分为两种:单向加密、双向加密。

单向加密是不可逆的,也就是只能加密,不能解密。一般用来传输相似用户名和密码,直接将加密后的数据提交到后台,由于后台不须要知道用户名和密码,能够直接将收到的加密后的数据存储到数据库。

双向加密算法一般分为对称性加密算法和非对称性加密算法,对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,以后即是对数据进行 加解密了。非对称算法与之不一样,发送双方A,B事先均生成一堆密匙,而后A将本身的公有密匙发送给B,B将本身的公有密匙发送给A,若是A要给B发送消 息,则先须要用B的公有密匙进行消息加密,而后发送给B端,此时B端再用本身的私有密匙进行消息解密,B向A发送消息时为一样的道理。

2.经常使用算法

几种对称性加密算法:AES,DES,3DES

DES是一种分组数据加密技术(先将数据分红固定长度的小数据块,以后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不一样密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。

相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。

几种非对称性加密算法:RSA,DSA,ECC

RSA和DSA的安全性及其它各方面性能都差很少,而ECC较之则有着不少的性能优越,包括处理速度,带宽要求,存储空间等等。

几种线性散列算法(签名算法):MD5,SHA1,HMAC

这几种算法只生成一串不可逆的密文,常常用其效验数据传输过程当中是否通过修改,由于相同的生成算法对于同一明文只会生成惟一的密文,若相同算法生成的密文不一样,则证实传输数据进行过了修改。一般在数据传说过程前,使用MD5和SHA1算法均须要发送和接收数据双方在数据传送以前就知道密匙生成算法,而HMAC与之不一样的是须要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。

3.加密算法选用

对于各类加密算法的选用:

因为对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,所以当数据量很小时,咱们能够考虑采用非对称加密算法。

在实际的操做过程当中,咱们一般采用的方式是:采用非对称加密算法管理对称算法的密钥,而后用对称加密算法加密数据,这样咱们就集成了两类加密算法的优势,既实现了加密速度快的优势,又实现了安全方便管理密钥的优势。

若是在选定了加密算法后,那采用多少位的密钥呢?通常来讲,密钥越长,运行的速度就越慢,应该根据的咱们实际须要的安全级别来选择,通常来讲,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为便可。

对于几种加密算法的内部实现原理,有兴趣的能够细细研究。而对于其实现而言,网上有不少开源版本,比较经典的是PorlaSSL(官网:http://en.wikipedia.org/wiki/PolarSSL )。其它语言如JAVA,OBJC也都有相应的类库可使用。

 

常见加密算法 

DESData Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 

3DESTriple DES):是基于DES,对一块数据用三个不一样的密钥进行三次加密,强度更高;

RC2RC4:用变长密钥对大量数据进行加密,比 DES 快;

IDEAInternational Data Encryption Algorithm)国际数据加密算法:使用 128 位密钥提供很是强的安全性;

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,须要加密的文件块的长度也是可变的;

DSADigital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

AESAdvanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前 AES 标准的一个实现是 Rijndael 算法;

BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快; 

其它算法,如ElGamalDeffie-Hellman、新型椭圆曲线算法ECC等。 好比说,MD5,你在一些比较正式而严格的网站下的东西通常都会有MD5值给出,如安全焦点的软件工具,每一个都有MD5。严格来讲MD5并不能算是一种加密算法,只能说是一种摘要算法(数据摘要算法是密码学算法中很是重要的一个分支,它经过对全部数据提取指纹信息以实现数据签名、数据完整性校验等功能,因为其不可逆性,有时候会被用作敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法。

MD5分类:

1CRC8CRC16CRC32

CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分普遍,尤为是通信领域,如今应用最多的就是 CRC32 算法,它产生一个4字节(32)的校验值,通常是以8位十六进制数,如FA 12 CD 45等。CRC算法的优势在于简便、速度快,严格的来讲,CRC更应该被称为数据校验算法,但其功能与数据摘要算法相似,所以也做为测试的可选算法。

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

SFV 相关工具软件有不少,如MagicSFVMooSFV等。

2MD2 MD4MD5

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

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

MD5 相关的工具备不少,如 WinMD5等。

3SHA1SHA256SHA384SHA512

SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构-- 美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA20字节(160)SHA25632字节(256)SHA38448字节(384)SHA51264字节(512),因为它产生的数据摘要的长度更长,所以更难以发生碰撞,所以也更为安全,它是将来数据摘要算法的发展方向。因为SHA系列算法的数据摘要长度较长,所以其运算速度与MD5相比,也相对较慢。

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

4RIPEMDPANAMATIGERADLER32

RIPEMDHans Dobbertin3人在对MD4MD5缺陷分析基础上,于1996年提出来的,有4个标准128160256320,其对应输出长度分别为16字节、20字节、32字节和40字节。

TIGERRoss1995年提出。Tiger号称是最快的Hash算法,专门为64位机器作了优化。

相关文章
相关标签/搜索