這兩天研究了一下項目中的密碼加密,可以說得上是學到了很多。下面來大緻說一下。
單向加密算法主要用來驗證資料傳輸的過程中,是否被篡改過。
BASE64 嚴格地說,屬于編碼格式,而非加密算法
MD5(Message Digest algorithm 5,資訊摘要算法)
SHA(Secure Hash Algorithm,安全雜湊演算法)
HMAC(Hash Message Authentication Code,散列消息驗證碼
2.對稱和非對稱加密算法
對稱和非對稱加密算法主要采用公鑰和私鑰的形式,來對資料加密。
DES(Data Encryption Standard,資料加密算法)
PBE(Password-based encryption,基于密碼驗證)
RSA(算法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
DH(Diffie-Hellman算法,密鑰一緻協定)
DSA(Digital Signature Algorithm,數字簽名)
ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學)
建立使用者:同一預設密碼處理,使用者登入時要修改密碼。擷取到預設密碼之後先進行一次sha1加密,然後根據user code 和 salt進行第二次sha1加密存入資料庫。
校驗使用者:使用者登入時,js處理密碼。首先進行一次sha1加密,然後進行一次rsa加密(需要向背景請求ras公鑰的modulus 和 exponent)。背景通過rsa公鑰對應的私鑰進行解密,然後根據user code進行找到對應的使用者,通過user code 和 salt進行sha1加密,将得到的結果和資料庫中的進行對比。
js sha1算法加密(sha1.js)

View Code
encrypt.js
js rsa 算法加密(security.js)

前端加密示例
java rsa 算法(RSAUtils.java)

java rsa 公鑰擷取(傳遞給前端)

java sha 算法(PasswordUtils.java)

後端校驗示例
後端加密示例