本文目錄一覽:
前後分離java傳到前端的數據怎麼加密?
你覺得前端用這個數據用來幹什麼?你把明文送給前端的時候,加密的意義就已經不大了。
前後端交互數據加解密
本文提供了一種前後端交互數據的加解密方法,主要涉及了AES和RSA兩種加密方式。
AES加密是一種對稱式加密,即加密和解密所需秘鑰是相同的。後端生成一組秘鑰,並利用該秘鑰加密數據,然後發給前端,同時也需要把秘鑰發送給前端,這樣前端才能解密。這樣就會有風險,一旦秘鑰被泄露,你的加密將不存在任何意義。同時,相比RSA加密來說,好處是不會限制加密字元串的長度。
RSA加密,是一種非對稱式加密,相比AES加密,這個就安全多了。後端生成一對秘鑰,自己拿著私鑰,公鑰可以公開。這樣前端拿公鑰進行加密,後端拿私鑰進行解密,私鑰掌握在自己手裡,被泄露的風險就小了很多。當然也有不好的地方,就是被加密字元串的長度不能過長,1024的秘鑰只能加密117位元組以內的明文,這就比較尷尬了,可能稍微長一點的數據就會超出了,當然可以通過2048或者4096的秘鑰來延長加密長度,但總會被超出。所以適合需要加密長度不長的數據,最好是已知長度的數據,這樣 就不會因長度問題報錯。
RSA+AES混合加密,即後端通過RSA演算法生成一對公私鑰,並把公鑰提供給前端。前端通過AES演算法生成密鑰,利用公鑰進行加密並送給後端,後端根據私鑰進行解密,得到與前端相同的AES密鑰。然後,前後端就可以利用AES密鑰對稱加密進行數據交互。
詳細步驟如圖所示。
RSA+AES混合加密,結合了兩種加密方式的優點。另外,前端每次啟動都會隨機生成AES密鑰,後端增加token失效機制(前端設置了定時任務請求token),增加了前後端數據交互的安全性。
如何前台JS進行加密,後台java進行解密?
很不幸,就以我的知識範圍,純粹的JS無法做到百分百的安全。理由如下:
現在的瀏覽器端可以直接看到你的JS代碼,JS代碼都是明文的。儘管你可以壓縮,混淆,但是也是加大hack的難度,無法徹底對瀏覽器不可見。既然你的代碼都被看見了,那麼Hash,加密都是扯淡了。
對內容加密可以使用HTTPS,這點不假。但是這僅僅能夠抵抗抓包工具,但是通過瀏覽器的開發工具,仍然能夠看到你的請求內容,格式。那麼就可以按照你的格式偽造請求。我們就可以通過偽造請求修改某社交網站的用戶設置。
結論:純粹JS看起來無法滿足你的需求,但是可以使用object標籤,自己開發控制項進行數據加密,這點事可以的。但是這就超出了JS的範圍。並且Object的這個話題太大,我沒辦法給你展開,你自己研究下吧
原創文章,作者:NRZR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134981.html