java 登录数据前端加密+后台验证RSA
前端加密使用RSA+MD5+自寫算法
使用到了 md5.js+jsencrypt.min.js+1.js+RSAUtils.java(自寫算法)
下載鏈接:https://gitee.com/gy297879328/learning_summary/tree/master/jiami
使用:RSAUtils.java生成一堆密鑰對 ( 公鑰跟私鑰)公鑰放到前臺 私鑰放后臺
中間使用JSON傳輸
前端
$.ajax({type:"POST",url:"#(path)/manager/login/submit?returnUrl="+returnUrl,data:{//u:賬號//p:密碼//v 驗證碼//returnurl 跳轉的url"l":j(u,p,v,returnUrl)//加密參數 j方法在 1.js中},dataType:"JSON",success:function (data) {console.log(data);if(data.status=="success"){window.location.href="/";}} });1.js
## 1.js function j(a,b,c,d) {var data = {};data["userCode"] = a;data["password"] = b;data["verifyCode"] = c;data["returnUrl"] = d;## s方法我放到了 md5.js中,自寫算法也在里面嵌套這data["sign"] = s(a+b+c+d);var encrypt = new JSEncrypt();## 替換私鑰encrypt.setPublicKey('MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgZsjUfBvYInbxhYFmp0wyGluPxJySfmXZ6fkOZw0WP6jiNnf8Kj6hdChaj5u+FihTZYSCL39+i+ME2Y2FHTVXVwxz4vBfTS+ePtQ1MY+zfmzSVhIAJ7UFTRj2hSwVG9Ic0+5W/VtYl4Q+EJhawdq9bLnXzjz+UIMRDd3w85bq5/k83oXgUz+BEL5DixyjR3eXXZ7gBqeGUOBZ7qQ3NaeWKDlKKMm6yl3F2uIoUiJ9jMtupvlZMoiWGOSTd/RqZSBjisp088MrzLS0sn2DpMguXTLEJQNyqDa6r233+6nHKGWlO+nLAEPiJ0ib5fEIKiOC6yT0uvgQFXLjlXzuc3VXQIDAQAB');return encrypt.encrypt(JSON.stringify(data)); }后臺
//前臺提交的加密字符串String encrypt = getPara("l");//獲取私鑰字符串String privateKey = PropKit.get("PrivateKey");String encryptStr="";try {//解密 RSAUtils在工具包里面有encryptStr = new String(RSAUtils.privateDecrypt(encrypt, privateKey));} catch (Exception e) {HashMap<String, Object> returnMap = new HashMap<>();returnMap.put("status", "false");returnMap.put("msg", "encrypt error");returnMap.put("returnUrl", "returnUrl");renderJson(returnMap);return;}HashMap<String, String> hashMap=JSON.parseObject(encryptStr, HashMap.class);String userCode = hashMap.get("userCode");String password = hashMap.get("password");String verifyCode = hashMap.get("verifyCode");String returnUrl= hashMap.get("returnUrl");//驗證sign//EncryptUtil類 自寫算法1.js的java版本 String sign= hashMap.get("sign");String s = Md5Kit.md5(EncryptUtil.pwd(userCode + password + verifyCode + returnUrl) + "sxjlrj");if(!sign.equals(s.toLowerCase())){//加密錯誤HashMap<String, Object> returnMap = new HashMap<>();returnMap.put("status", "false");returnMap.put("msg", "encrypt error");returnMap.put("returnUrl", "returnUrl");renderJson(returnMap);return;}混淆
因為里面的js在前臺是能看的 所以需要將自寫的1.js代碼 js混淆一下,建議采用以下 隨便哪一種
方法1:https://www.jsjiami.com/混淆的地址
方法2:https://www.javascriptobfuscator.com/JavaScript-Obfuscator.aspx
將1.js代碼混淆后 再替換放到js中就好了
了解
Javascript-obfuscator
官網:https://github.com/javascript-obfuscator/javascript-obfuscator
特點:開源,支持自定義混淆選項,支持上傳JS在線混淆;混淆后的代碼執行速度要慢15-80%(取決于混淆選項),并且混淆后的文件明顯更大;強度高。
簡介:JavaScript Obfuscator是一個免費但功能強大的JavaScript混淆器,其中包含多種自定義混淆功能,可為您的源代碼提供保護。
Javascript Obfuscator
官網:https://javascriptobfuscator.com/
特點:強度高,支持自定義混淆選項,支持上傳JS在線混淆,支持客戶端桌面版GUI;免費版支持最大200kb的JS文件,且單次最多對20個JS文件進行混淆;付費版支持單次批量混淆50個JS文件,價格$19/month起。
簡介:Javascript Obfuscator將JavaScript源代碼轉換為經過混淆且完全不可讀的形式,從而防止對其進行分析和盜竊。它是100%安全的JavaScript壓縮程序和最好的JavaScript壓縮器。
JShaman
官網:http://www.jshaman.com/
特點:支持自定義混淆選項,支持在線加混淆;免費版支持試用10次高級特性,強度中;付費版支持50次代碼混淆,價格¥16.9/年起。
簡介:使用字符串陣列化、平展控制流、多態變異、僵尸函數等手段,使代碼變的不可讀不可分析,達到最終保護的目的,且不影響代碼原有功能,是理想、實用的JS保護方案。JShaman采用的主要是代碼混淆技術。
JSjiami
官網:https://www.jsjiami.com/
特點:支持在線加混淆;加密、混淆、壓縮功能多合一;主要功能免費,混淆強度低,加密強度高;付費版支持單次批量混淆5個JS文件,價格¥88元/月起。
簡介:這是對一個JS腳本進行混淆的在線工具,壓縮體積較小,解密難度不難。如果運行不了,先使用eval壓縮?后再使用,先加密再混淆效果最佳。站點的【JS最牛加密】功能兼容性適中,解密難度極大。
其他JS混淆工具
1.JSFuck:https://utf-8.jp/public/jsfuck.html
2.aaencode:https://utf-8.jp/public/aaencode.html
3.jjencode:https://utf-8.jp/public/jjencode.html
4.JScrambler(收費):https://jscrambler.com/
5.http://beautifytools.com/javascript-obfuscator.php
6.http://www.freejsobfuscator.com/
7.https://jsconfusion.supfree.net/
8.https://www.cleancss.com/javascript-obfuscate/index.php
9.https://www.jb51.net/tools/JShunxiao.htm
10.其他:搜索引擎關鍵詞“JS混淆”/“JS Obfuscate”。
總結
以上是生活随笔為你收集整理的java 登录数据前端加密+后台验证RSA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window系统无限试用 JAVA ID
- 下一篇: 如何使用jquery_好程序员web前端