加密算法
常见的 对称加密 算法主要有 DES(数据加密标准)、3DES(三重DES)、AES(高级加密标准) 和Blowfish(河豚鱼)等,常见的 非对称算法 主要有 RSA、DSA 等,散列算法 主要有 SHA-1、SHA-256、MD5 等。
HASH算法(散列算法)
目前常用的是SHA-256算法是SHA-1的后继算法。
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。MD5比较老,比较容易碰撞。
对称密码算法
对称密码学的优点是效率高,开销小,适合加密大量的数据。但对称密码学要求通信双方事先协商好密钥,这就要求在协商过程中必须做好保密,密钥只能让使用的人知道,不能泄露。
AES、DES、3DES 都是 对称 的 块加密算法,加解密 的过程是 可逆的。
1、DES是IBM提出的,第一个基于Lucifer算法的加密技术,作为第一个加密标准,安全性低。
2、3DES和DES使用同样的算法,只是做了三次加密来提升安全级别。
3、AES旨在取代DES加密技术。AES128、AES192、AES256区别是密钥长度和加密轮数不同,AES128性能最好,AES256安全性最高,针对AES唯一的破解方式就是暴力破解。AES本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。
4、Blowfish由Bruce Schneier发明的一种在世界范围被广泛使用的加密方式。Blowfish使用16到448位不同长度的密钥对数据进行16次加密。这样黑客们基本不可能对其进行解密。暂时还没有针对blowfish的破解。
非对称加密算法
又称为 公开密钥加密算法。它需要两个密钥,一个称为 公开密钥 (public key),即 公钥,另一个称为 私有密钥 (private key),即 私钥。目前常用的是RSA算法
非对称密码学使用场景
数据加解密
与对称密码学相比,公钥密码学(非对称密码学)加密数据的计算非常复杂,而且开销大、速度较慢,所以不适用于加密大量数据的场景。在实际使用中,通信双方通常会使用公钥密码学来交换密钥素材,双方最终计算出密钥,而用对称密码学来加密实际的数据,两者配合使用,保证了加密速度和安全性。
真实性验证
除了加解密,RSA 还能实现真实性验证,即身份认证功能,这也是利用了公钥密码学中由任一个密钥加密的信息只能用另一个密钥进行解密这一原理。
加解密功能是数据发送方使用接收方的公钥加密,接收方使用自己的私钥解密。而身份认证功能是被认证方使用自己的私钥进行加密,认证方使用被认证方的公钥进行解密。
完整性验证
使用私钥加密公钥解密这种方式,还能实现完整性验证,即签名功能。所谓签名,就是在数据的后面再加上一段内容,可以证明数据没有被修改过。
原理:你有一个需要被验签的原串A。
步骤一:选择hash算法将A进行hash得到摘要(hash_a);
步骤二:将hash_a进行加密,得到加密值encrypt_a;
步骤三:将原串A和加密的encrypt_a发给第三方,第三方进行验签。第三方先解密encrypt_a,得到一个hash值hash_a1,然后对原串A使用同样的hash算法进行hash,得到的即为加密前的hash_a,如果hash_a = hash_a1, 那么验签成功。
RSA使用私钥对信息加密来做签名,使用公钥解密去验签。
HASH密码学可以将任意长的字符串通过哈希计算出固定长度字符串,并且该计算是单向运算,无法逆推。最重要的是,原字符串任意字符的变化都会导致不同的计算结果。HASH计算后得出的信息通常称为原字符串的摘要信息,也可以称为指纹信息。通过对比摘要信息,就可以判断数据是否被修改,所以 HASH密码学通常用于保证数据的完整性。