巧用try、catch实现JS代码加密

本文分享一种奇特的JS代码加密解密方法。

技术原理

将JS代码加密,然后在try、catch错误捕捉语法中,用eval进行执行,能执行则表明解密成功,不能执行则意味着解密出错,此时会抛出错误,并由catch捕捉进行重新解密。

源码解析

加密部分:

解密部分:

完整源码

    /*加密部分*/var source_string ='alert("JShaman提供专业的JavaScript代码混淆加密");';var encoded_string = "";function encode(){for(var i=0;i<source_string.length;i++){//异或加密每一个字符,异或密钥:61encoded_string += String.fromCharCode(source_string.charCodeAt(i)^61);}alert(encoded_string);console.log("加密完成:",encoded_string);}encode();/*解密部分*///初始解密密钥,初始设为0,可为小于加密字符长度的任意值var encode_key = 0;//解密后的字符串,初始为加密值var decoded_string = encoded_string;function decode(){try{//eval执行,能执行则说明解密成功,因为原始代码是alert,是能正确执行的语句eval(decoded_string);console.log("解密成功:", decoded_string);}catch(e){decoded_string ="";for(var i=0; i<encoded_string.length; i++){decoded_string += String.fromCharCode(encoded_string.charCodeAt(i) ^ encode_key );}encode_key += 1;decode();}}decode();

二重加密

如果把以上代码,用JShaman再次进行混淆加密,将得到更加安全的加密代码:

也可用Ty2y进行JS代码混淆加密:

得到的加密代码:

运行效果

注意事项

这是一种思路新奇的加密手段,但此方法有一定的使用条件限制:因解密时要依赖eval执行,因此被加密的语句需要是可执行的,比如需包裹在alert、console.log等等语句中。

巧用try、catch实现JS代码加密相关推荐

  1. JS代码加密后出错?用保留字就好了。

    JS代码加密后出错?用保留字就好了 在使用JShaman对JS代码进行混淆加密时,偶尔,会遇到加密后运行出错.比如: 遇到这个问题,不必慌,很容易解决. 如上图中所示,提示的很清晰:某变量的rotat ...

  2. JS代码加密时,什么情况下不能使用全局变量、函数名加密?

    JS代码加密时,什么情况下不能使用全局变量.函数名加密? 在进行JavaScript代码混淆加密时,常会用到变量名.函数名混淆加密. 例如以下代码: 使用JShaman进行JS代码混淆加密: 配置中, ...

  3. 使用JShaman进行JS代码加密时,保留字的作用

    使用JShaman进行JS代码加密时,保留字的作用 JShaman是一个在线加密JS代码的网站, 它有一个功能:字符串加密,可以把JS代码中明文的字符串加密起来,使字符串不可见. 例如: 如上图,一个 ...

  4. 调用JShaman的Web API接口,实现JS代码加密。

    在NodeJS中,调用JShaman的Web API接口,实现JS代码加密. 同样的方法,也可把该功能集成到自己的产品或项目中,让自己也具备JS加密功能. 调用JShaman接口的源码非常简单: /* ...

  5. 如何保护前端JS代码?前端js代码加密

    Web前端JS代码需要保护吗? 这得具体情况具体分析. 1.如果只是写一段web页面图片轮播,或是跑马灯效果等等之类简单的功能.那不需要保护. 2.如果是精心设计一个绚丽的特效,如果想要保护这段自己付 ...

  6. js混淆加密,通过混淆Js代码让别人(很难)还原,js代码加密

    使用js的混淆加密,其目的是为了保护我们的前端代码逻辑,对应一些搞技术吃饭的公司来说,为了防止被竞争对手抓取或使用自己的代码,就会考虑如何加密,或者混淆js来达到代码保护. 1.为什么需要js混淆 在 ...

  7. 国内两个JS加密平台,加密JS代码效果对比

    国内两个JS加密平台,加密JS代码效果对比 如题,对比国内两家JS加密平台,加密JS的效果 一.JShaman,JS加密平台 测试用JS代码: function get_copyright(){ va ...

  8. JS混淆加密:Eval的未公开用法

    JavaScript奇技淫巧:Eval的未公开用法 作者: http://JShaman.com w2sft,转载请保留此信息 很多人都知道,Eval是用来执行JS代码的,可以执行运算.可以输出结果. ...

  9. java加密解密代码_base64位加密解密原理及js代码实现

    base64位加密解密原理及js代码实现 在网上找了很多关于Base64加密解密的原理以一个比较通俗易懂的方式理解整理了一下大致原理如下 先上base64对照表 #加密 #1:将明文对照以acsii码 ...

最新文章

  1. 2020 年 5 月程序员工资统计,平均 14542 元,我又拖后腿了!
  2. NOP 指令作用[转]
  3. yii2 modal弹窗之ActiveForm ajax表单异步验证
  4. 【2018.3.17】模拟赛之三-ssl1863jzoj1367 俄罗斯方块【模拟】
  5. 其他团队对本团队评价的总结
  6. Day39:threading模块、ThreadLocal
  7. Java NIO学习
  8. javascript捕获事件event
  9. 同名文件替换怎么恢复_U盘里被替换的文件怎么恢复?方法选对,其实很简单...
  10. 计算机组成原理学习笔记——数据通路
  11. 计算机网络上级操作题,计算机网络上机操作试题答案.pdf
  12. 从 MVC 到使用 ASP.NET Core 6.0 的最小 API
  13. 视频mov如何转换成mp4?
  14. 个人推荐一款并发测试工具
  15. Element中MessageBox弹窗取消回调事件
  16. web项目登录报错:HTTP Status 500 - Error instantiating servlet class com.gxuwz.medical.web.servlet.LoginSer
  17. 计算机二级Python历年真题解答(第四套)
  18. 移动端web总结(二)——微金所项目总结
  19. 【BZOJ3669】【NOI2014】魔法森林 (spfa动态队列加点算法)
  20. 嵌入式系统设计与开发期末考试复习

热门文章

  1. 供应商的STP等格式用SOLIDWORKS打开破面怎么办?
  2. AIR780E合宙固件定制
  3. 这个618别错过、值得入手的数码好物推荐
  4. better-scroll 实现下拉刷新、上拉加载的那些坑
  5. [19/06/05-星期三] CSS基础_样式表的位置(内联、内部、外部样式)、块元素(div)、内联元素(span)、常用的选择器...
  6. Hase Java API 和 Hbase Scala API
  7. 骑车与走路(YZOJ-1041)
  8. win2008 R2下开启显卡硬件加速
  9. android小米全面屏屏幕高度,小米众筹一款新的全面屏手机,小尺寸屏幕仅为5.05英寸,内置小爱同学玩转丰富...
  10. 《创意人-创意思考的自我训练》 (学习笔记)