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);
這樣同樣的密碼,加密多次值是不相同的,因為加入了隨機字符串。
