前端加密javascript——eval加密
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script> function myFunction(){ document.getElementById("demo").innerHTML="Hello World"; } var a = 62; function encode() { //加密 var code = document.getElementById('code').value; code = code.replace(/[\r\n]+/g, ''); code = code.replace(/'/g, "\\'"); var tmp = code.match(/\b(\w+)\b/g); tmp.sort(); var dict = []; var i, t = ''; for(var i=0; i<tmp.length; i++) { if(tmp[i] != t) dict.push(t = tmp[i]); } var len = dict.length; var ch; for(i=0; i<len; i++) { ch = num(i); code = code.replace(new RegExp('\\b'+dict[i]+'\\b','g'), ch); if(ch == dict[i]) dict[i] = ''; } document.getElementById('code').value = "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}(" + "'"+code+"',"+a+","+len+",'"+ dict.join('|')+"'.split('|'),0,{}))"; } function num(c) { return(c<a?'':num(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36)); } function run() { eval(document.getElementById('code').value); } function decode() { //解密 var code = document.getElementById('code').value; code = code.replace(/^eval/, ''); document.getElementById('code').value = eval(code); } </script> </head> <body> <textarea id=code cols=80 rows=20> </textarea><br> <p>单击按钮触发函数。</p> <button onclick="encode()">加密</button> <button onclick="decode()">解密</button> <p id="demo"></p> </body> </html>
网上的例子
测试了一下
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="a"></div> </body> <script> document.getElementById('a').innerHTML = "testContent"; </script> </html>
eval混淆以后
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="a"></div> </body> <script> eval(function(p,a,c,k,e,d,aaa){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}(' 1.2(\'0\').3 = "4";',62,5,'a|document|getElementById|innerHTML|testContent'.split('|'),0,{})) </script> </html>
任然可以运行。
可以修改encode函数里面的的一些值,我试了,没什么问题。
看加密算法的初衷是,想写一个功能,想把核心逻辑的一块代码不被抄袭,但是javascript很难不被反编译。但是常用的加密方式都是可以很容易就被反向破解的,所以研究一下加密算法,自己改一套加密算法,这样破解难度就比较大。javascript既然能够按照约定的格式加密,那么加密的时候,加入随机生成的代码段和变量值,和你自己写的算法,就很难被反编译了。(后台获取还得防止代理篡改)。还可以把js的某一段代码通过后台传输注入到页面上面,而且根据用户的值去生成,这样换个人用同一套注入的前端代码就不能匹配上,然后返回后端校验,再多次返回,检验不通过,就无法运行代码了。这是我的设想
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~