一 单相加密
概念:单向加密又称为不可逆加密算法,在加密过程中不使用密钥,明文由系统加密处理成密文,密文无法解密。
用途:一般用于验证,如,将两段明文通过单向加密后,如果得到的密文相同则认为这两段明文也相同(登录密码验证,后台保管的是密码的密文)。
加密算法:MD5、SHA、HMAC
名称 | 说明 | 输出 | 应用 |
MD5 | 信息熵摘要算法 | 128位(16字节)的散列值 (不唯一,一个md5可能对应多个原文) | 一致性验证 账户密码的密文存储 |
SHA | SHA-0:1993年发布,当时称做安全散列标准(Secure Hash Standard),发布之后很快就被NSA撤回,是SHA-1的前身。 SHA-1:1995年发布,SHA-1在许多安全协议中广为使用,包括TLS、GnuPG、SSH、S/MIME和IPsec,是MD5的后继者。但SHA-1的安全性在2010年以后已经不被大多数的加密场景所接受。2017年荷兰密码学研究小组CWI和Google正式宣布攻破了SHA-1[1]。 SHA-2:2001年发布,包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-2目前没有出现明显的弱点。虽然至今尚未出现对SHA-2有效的攻击,但它的算法跟SHA-1基本上仍然相似。 SHA-3:2015年正式发布,由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的SHA-3。 | 根据后缀不同输出位数不同 | 同上 |
HMAC | HMAC是一种使用单向散列函数(MD5/SHA)来构造消息认证码的方法,其中HMAC中的H就是Hash的意思。 |
二 对称加密算法
概念:采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
用途:网络传输数据的加密、文件加密。
加密算法:DES,3DES,AES,RC2,RC4, RC5
名称 | 说明 | 备注 |
DES | DES是以64比特的明文(比特序列)为一个单位来进行加密的,这个64比特的单位称为分组。一般来说,以分组为单位进行处理的密码算法称为分组密码(blockcipher),DES就是分组密码的一种。 DES的密钥长度是64比特,但由于每隔7比特会设置一个用于错误检查的比特,因此实质上其密钥长度是56比特。 | 已被破解。目前很少被用来加密。只用来解密以前加密的东西。 |
AES | 也是分组加密。分组长度为128比特,密钥长度可以以32bit为单位在128bit到256bit的范围内进行选择(不过在AES的规格中,密钥长度只有128、192和256比特三种 )。 |
三 非对称加密算法
概念:采用双钥实现加解密,加密秘钥加密的密文自己无法解密,只能被解密秘钥解密。
用途:网络传输、文件加密
加密算法:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal、ECC(椭圆曲线密码编码学)
原理简介:非对称加密有两个秘钥:公钥、私钥。公钥是公开的,私钥只有自己知道。
- 单向加密通讯。其中,公钥用于加密,私钥用于解密。本质上公钥加密的密文可以被私钥解密,私钥加密的密文可以被公钥解密。但公钥是公开的,私钥加密的东西所有人都可以解开,所以实际使用时如果是双工通信需要两对秘钥(四个),发送者使用接收者的公钥加密,接收者使用自己的私钥解密。
- 签名。其中,私钥用于签名,公钥用于验证(用公钥解密后再对比原文是否一致)。(任何非对称加密算法都可以用于签名)。签名的作用是为了验证发送者的身份(私钥只有发送者知道),私钥加密后的密文称为数字签名,如果公钥能解开并验证则证明则可以判定发送者是否合法。