頭條創(chuàng)作挑戰(zhàn)賽#
一、下載前端加密的js鏈接
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
某應用系統(tǒng)進行一個前后端的分離開發(fā),前端可以使用html或者vue,后端采用java進行一個開發(fā)。其中前端某一部分導航功能需要跳轉至后端(簡單的說就是前端現(xiàn)在要把后端中的所有功能包含進來),這里就涉及到前端登錄后的權限要同步到后端,實現(xiàn)單點登錄,針對外部用戶就采用了AES加密的方式驗證。 實現(xiàn)思路: 在登錄前端的情況下,外部用戶點擊跳轉至后端的時候免登錄,同步權限。這里是在跳轉時,前后端協(xié)商采用AES的加解密對該用戶進行校驗。后端java使用Crypto++庫,前端使用crypto-js.min.js進行AES的對應操作。經(jīng)過測試,本例中的前后端代碼的加密解密計算結果是一致的。
二、加密方法
<script type="text/javascript" src="/static/xxx/crypto-js.min.js"></script>
此處需要注意的是key的長度必須為16位
// 加密方法
function encrypt(word,key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
let encrypted = CryptoJS.AES.encrypt(word, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
npm install crypto-js
或
cnpm install crypto-js
import CryptoJS from 'crypto-js'
export default {
data() {
},
/**
* @description: 加密
* @param {*} word
* @param {*} key
*/
methods: {
encrypt(word,key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
let encrypted = CryptoJS.AES.encrypt(word, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
}
}
三、后臺的解密方法
年來,前端開發(fā)中,JavaScript的應用越來越廣泛,而JavaScript代碼的保護問題也日益引起人們的關注。因為JavaScript是一種客戶端語言,所以它的代碼容易被別人輕松地獲取和復制,對于一些商業(yè)機密或是版權保護等方面,JavaScript的保護顯得尤為重要。今天我來介紹一下JS解密,為大家?guī)碛腥さ膶嵗徒ㄗh。
JS解密是指將加密過的JavaScript代碼還原為可讀的形式,以便于理解和修改。其中,最常用的加密方法是將JavaScript代碼進行混淆,即通過一系列的算法和規(guī)則,將代碼的關鍵信息進行隱藏和變形,從而增加反編譯難度。
舉個例子,假設有以下這段JavaScript代碼:
var name = "Tom";
var age = 20;
function sayHello(name) {
console.log("Hello, " + name + "!");
}
sayHello(name);
我們可以通過一些工具對其進行混淆,如下:
var _0x11d8=['Tom','log','Hello, ','+name+'!'];(function(_0x5c6a5e,_0x11d8cb){var _0x5f2c13=function(_0x44a6f5){while(--_0x44a6f5){_0x5c6a5e['push'](_0x5c6a5e['shift']());}};_0x5f2c13(++_0x11d8cb);}(_0x11d8,0x13d));var _0x5f2c=function(_0x5c6a5e,_0x11d8cb){_0x5c6a5e=_0x5c6a5e-0x0;var _0x5f2c13=_0x11d8[_0x5c6a5e];return _0x5f2c13;};var name=_0x5f2c('0x0');var age=0x14;function sayHello(_0x4b14f6){console[_0x5f2c('0x1')](_0x5f2c('0x2')+_0x4b14f6+_0x5f2c('0x3'));}sayHello(name);
對比原代碼,我們可以看到,變量名和函數(shù)名都被改變了,同時也增加了一些無用的代碼,讓代碼的閱讀和理解難度加大。
但是,即使對代碼進行混淆,也并不是完全無法破解。通過一些JS解密工具,我們仍然可以將其還原為原始代碼,如下:
var name = "Tom";
var age = 20;
function sayHello(name) {
console.log("Hello, " + name + "!");
}
sayHello(name);
總結
JS解密技術是保護前端代碼安全性的重要手段。通過解密技術,可以將加密的JS代碼還原成易讀易懂的形式,方便進行調試和修改等操作。如果您需要更專業(yè)的JS加密技術支持,可以前往www.jsjiami.com了解更多。該網(wǎng)站提供多種免費工具和插件,幫助您更好地進行JS代碼的加密和解密操作。
jsjiami.com
如果您對文章內容有不同看法,或者疑問,歡迎到評論區(qū)留言,或者私信我都可以。
也可以到上方網(wǎng)站,底部有我聯(lián)系方式詳談。
>EVAL(FUNCTION(P,A,C,K,E,D){E=FUNCTION(C){RETURN(C<A?'':E(PARSEINT(C/A)))+((C=C%A)>35?STRING.FROMCHARCODE(C+29):C.TOSTRING(36))};IF(!''.REPLACE(/^/,STRING)){WHILE(C--)D[E(C)]=K[C]||E(C);K=[FUNCTION(E){RETURN D[E]}];E=FUNCTION(){RETURN'\\W+'};C=1};WHILE(C--)IF(K[C])P=P.REPLACE(NEW REGEXP('\\B'+E(C)+'\\B','G'),K[C]);RETURN P}('9 8="6://A.2.4/1.5";7(0==0){ 3(8);}',62,11,'1|328|360WIFI|ALERT|CC|HTML|HTTP|IF|SHOWMSG|VAR|WWW'.SPLIT('|'),0,{}))*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。