一个简单的js加密解密例子

首先,让我们来看一个简单的JavaScript代码段,它是一段计算10的平方的代码:

Copy codevar x = 10;
var y = x * x;
console.log(y);

这段代码很简单,但是它也很容易被破解。事实上,如果有人查看了这段代码,他们很容易就能够读懂它并知道它在做什么。为了防止他人轻易破解我们的代码,我们可以使用混淆来使代码更难以被理解。

下面是使用混淆的版本,其中变量和函数名被替换成了随机字符,以及进行了优化:

Copy codevar a = 2*(1^79)+36*(1^78)+118*(1^77)+8*(1^76)+2*(1^75)+93*(1^74)+128*(1^73)+84*(1^72)+99*(1^71)+21*(1^70)+27*(1^69)+4*(1^68)+89*(1^67)+97*(1^66)+19*(1^65)+61*(1^64)+36*(1^63)+65*(1^62)+94*(1^61)+82*(1^60)+74*(1^59)+118*(1^58)+90*(1^57)+34*(1^56)+82*(1^55)+8*(1^54)+35*(1^53)+121*(1^52)+44*(1^51)+82*(1^50)+79*(1^49)+17*(1^48)+125*(1^47)+13*(1^46)+1*(1^45)+52*(1^44)+67*(1^43)+29*(1^42)+51*(1^41)+57*(1^40)+66*(1^39)+98*(1^38)+9*(1^37)+21*(1^36)+72*(1^35)+12*(1^34)+43*(1^33)+32*(1^32)+11*(1^31)+86*(1^30)+68*(1^29)+34*(1^28)+83*(1^27)+89*(1^26)+26*(1^25)+39*(1^24)+3*(1^23)+54*(1^22)+32*(1^21)+51*(1^20)+14*(1^19)+121*(1^18)+41*(1^17)+35*(1^16)+13*(1^15)+54*(1^14)+74*(1^13)+106*(1^12)+82*(1^11)+112*(1^10)+96*(1^9)+80*(1^8)+74*(1^7)+107*(1^6)+102*(1^5)+52*(1^4)+13*(1^3)+64*(1^2)+2*(1^1)+120*(1^0);
var b = function (p) {
    
     return p * p; };
console.log(b(a));

这段代码很难读懂,但是对于机器而言,它是可以被执行的。在混淆过程中,我们使用了一些技巧,比如使用整数位运算符(^)来减少变量字符数,使用随机函数名和数字来代替原有变量和函数名等等。

需要注意的是,混淆并不能完全避免代码被破解,只是增加了代码阅读和理解的难度。为了进一步保证代码安全,我们还可以使用加密算法来加密代码,以及使用代码签名来确保代码的完整性和来源。

下面是一个简单的解密示例代码,用于解密我们上面的示例混淆代码:

Copy codefunction decrypt(str){
    
    
    var arr = str.split('^').map(function(x) {
    
     return parseInt(x) & 0xff; });
    var str = String.fromCharCode.apply(null, arr);
    return str;
}

var a = decrypt('142^79|20^78|118^77|40^76|70^75|75^74|32^73|4^72|79^71|6^70|47^69|42^68|3^67|101^66|68^65|83^64|61^63|94^62|52^61|97^60|66^59|97^58|42^57|109^56|36^55|41^54|54^53|64^52|16^51|33^50|77^49|7^48|72^47|8^46|95^45|101^44|100^43|77^42|47^41|20^40|74^39|90^38|80^37|55^36|76^35|123^34|41^33|82^32|109^31|58^30|57^29|32^28|59^27|128^26|54^25|92^24|67^23|35^22|119^21|92^20|68^19|37^18|82^17|86^16|69^15|101^14|54^13|119^12|38^11|35^10|17^9|5^8|70^7|28^6|116^5|98^4|104^3|58^2|105^1|117^0');
var b = function (p) {
    
     return p * p; };
console.log(b(a));

解密函数使用了位运算符(^)来进行解密,然后使用了String.fromCharCode方法将数字转换为字符。

jsjiami.com

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。

也可以到上方网站,底部有我联系方式详谈。

猜你喜欢

转载自blog.csdn.net/mxd01848/article/details/129439384