一直对加解密这一块儿很晕,这一段时间抽时间好好整理一下,争取彻底清洗出来
加密算法分类
加密算法的分类主要是按照是否能够解密,和密钥是否相同来进行大类性质划分,不涉及具体的加解密算法
- 单向加密算法(hash算法)
- 对称加密算法
- 非对称加密算法
每个类别的加密算法所包含的算法
-
单向加密算法(hash算法)
- Base64:这个具体来说算不上是一个加密,只是一个编码,但是也是很有用的,经常在加解密中用到
- md5:消息摘要算法,保证消息的完整性
- sha:(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法
- HMAC:(Hash Message Authentication Code)散列消息鉴别码,主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出,就像是在md5上加了一个扰动因子
-
对称加密算法:加解密使用同一个密钥
- DES:(Data Encryption Standard)中文为数据加密标准:是一种使用密钥加密的块算法
- 3DES:(Triple DES),中文名“三重数据加密算法,3 条 56 位的密钥对数据进行三次加密。3DES(即 Triple DES)是 DES 向 AES 过渡的加密算法
3.CAST:是 通用的 64 位块加密, 允许最大 128 位的块大小. - Blowfish:计的Blowfish算法用途广泛,意在摒弃DES的老化以及其他算法的强制捆绑
- Twofish:对称块加密; 使用一种简单密钥进行加密和解密,作为代替 DES 算法的候选之一
- IDEA:先于AES出来取代DES,java6没提供实现。Bouncy Castle提供了实现
- RC6:块加密算法,是高级加密标准 (AES)的5个候选之一
- Serpent:块加密算法,是高级加密标准 (AES)的5个候选之一.
- AES:(Advanced Encryption Standard),中文名“高级加密标准,为了来替代原先的 DES 标准
- PEB:(Password Base Encryption),中文名“基于口令加密”,是一种基于密码的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管
- Camellia:具有与AES同等级的安全强度及运算量
-
非对称加密
- RSA
- ECC:椭圆曲线公钥系统是代替RSA的强有力的竞争者
- Diffie-Hellman:DH秘钥交换算法,可以让双方在完全缺乏对方信息的前提条件下,通过不安全的信道达成一个共享密钥,这个方法被发明后不久出现了RSA,另一个进行公钥交换的算法。估计现在应该没有怎么用了吧。
- El Gamal:ElGamal加密系统是一个基于迪菲-赫尔曼密钥交换( Diffie-Hellman)的非对称加密算法
- DSA:(Digital Signature Algorithm)一般用于数字签名和认证。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多.
下面的章节再分别来介绍加解密的分类,上面说的很多算法在现在看来实际上都是过渡期算法,现在已经基本没有怎么用了,列在这里只是为了开阔一下眼界