1. 可逆加密算法
加密后, 密文可以反向解密得到密码原文。
1.1 对称加密
文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥。
在对称加密算法中:
数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去。
收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文进行解密,才能使其回复成可读明文。
在对称加密算法中,使用的密钥只有一个,收发双方都使用这个密钥,这就需要解密方事先知道加密密钥。
优点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
缺点:没有非对称加密安全。
用途:一般用于保存用户手机号、身份证等敏感但能解密的信息。
常见对称加密算法:AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256。
1.2 非对称加密
非对称加密会涉及到两把秘钥,私钥与公钥。私钥隐私保存,公钥可以下发给信任客户端。
加密与解密:
私钥加密,持有公钥才可以解密。
公钥加密,持有私钥才可解密。
签名:
私钥签名, 持有公钥进行验证是否被篡改过。
优点:非对称加密与对称加密相比,其安全性更好。
缺点:非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
用途:一般用于签名和认证。私钥服务器保存, 用来加密, 公钥客户拿着用于对于令牌或者签名的解密或者校验使用。
常见的非对称加密算法有:RSA、DSA(数字签名用)、ECC(移动设备用)、RS256 (采用SHA-256 的 RSA 签名)
2. 不可逆加密算法
一旦加密就不能反向解密得到密码原文。
用途:一般用于效验下载文件正确性,一般在网站上下载文件都能见到;存储用户敏感信息,如密码、 卡号等不可解密的信息。
常见的不可逆加密算法有:MD5、SHA、HMAC。
3. Base64编码
Base64只是一种编码方式,不算加密方法。
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。
Base64编码可用于在HTTP环境下传递较长的标识信息。采用Base64Base64编码解码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
4. MD5加密
它是一种被广泛使用的密码散列函数,可以产生一个128位的散列值,用于确保信息传输的完整。
MD5是一种不可逆加密算法。
如何使用?
//md5加密 DegestUtils:spring框架提供的工具类
String md5Str = DigestUtils.md5DigestAsHex("abc".getBytes());
System.out.println(md5Str);//900150983cd24fb0d6963f7d28e17f72
md5相同的密码每次加密都一样,不太安全
提高MD5的安全性【加盐+MD5】
//uername:zhangsan password:123 salt:随时字符串
String salt = RandomStringUtils.randomAlphanumeric(10);//获取一个10位的随机字符串
System.out.println(salt);
String pswd = "123"+salt;
String saltPswd = DigestUtils.md5DigestAsHex(pswd.getBytes());
System.out.println(saltPswd);
这样同样的密码,加密多次值是不相同的,因为加入了随机字符串。