CryptoJS (crypto.js) 為 JavaScript 提供了各種各樣的加密算法。
des對稱加密
在對稱加密算法中,數據發信方將明文和加密密鑰一起經過特殊加密算法處理后,使其變成復雜的加密密文發送出去。收信方收到密文后,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。
<script src="core.js" ></script> <script src="enc-base64.js" ></script> <script src="cipher-core.js" ></script> <script src="tripledes.js" ></script> <script src="mode-ecb.js" ></script> <script> //加密 function encryptByDES(message, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return encrypted.toString(); } //解密 function decryptByDES(ciphertext, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(ciphertext) }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } </script>
抓包
抓包就是將網絡傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操作,也用來檢查網絡安全。抓包也經常被用來進行數據截取等。使用抓包工具,可以監視網絡的狀態、數據流動情況以及網絡上傳輸的信息。當信息以明文的形式在網絡上傳輸時,便可以使用網絡監聽的方式來進行攻擊。將網絡接口設置在監聽模式,便可以將網上傳輸的源源不斷的信息截獲。黑客們常常用它來截獲用戶的口令。
https
超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,並為瀏覽器和服務器之間的通信加密。
在 HTTP 協議下,數據是明文傳輸,傳輸過程中網絡嗅探可直接獲取其中的數據。 如用戶的密碼和信用卡相關的資料,一旦被中間人獲取,會給用戶帶來極大的安全隱患。另一方面在非加密的傳輸過程中,攻擊者可更改數據或執行惡意的代碼等。HTTPS 的誕生就是為了解決中間人攻擊的問題。
加密速度減慢一定程度會降低用戶體驗,這也是一部分站點未啟用 https 的原因之一。但是因為我們的前端加密只會用在不常使用的登錄和注冊上,所以不會影響網站整體的體驗。
對稱加密和非對稱加密
對稱加密算法在加密和解密時使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰和私有密鑰。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。
(1)優缺點
非對稱加密與對稱加密相比,其安全性更好:對稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那么整個通信就會被破解;對稱加密的優點是加/解密速度快,適合於對大數據量進行加密,非對稱加密的缺點是加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
在實際的應用中,人們通常將非對稱加密與對稱加密兩者結合在一起使用,例如,對稱密鑰加密系統用於存儲大量數據信息,而公開密鑰加密系統則用於加密密鑰。
(2)非對稱加密工作過程
1、乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密后再發送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密后的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密后的信息。
在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那么需要甲先公布甲的公鑰給乙用於加密,甲自己保存甲的私鑰用於解密。
