前端加密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的某一段代码通过后台传输注入到页面上面,而且根据用户的值去生成,这样换个人用同一套注入的前端代码就不能匹配上,然后返回后端校验,再多次返回,检验不通过,就无法运行代码了。这是我的设想

 

posted on   chenyi4  阅读(960)  评论(1编辑  收藏  举报

编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示