JavaScript正则表达式加密

news2025/1/24 17:54:46

正则表达式可以加密吗?

是的,可以。起码可以确定的是在JavaScript编程中是可以的。

正则表达式加密有什么用?

可以隐藏一些重要的、私密的字符串内容,使代码的逻辑、秘密不容易被人窥探。

正则表达式加密示例

例如:

var reg = new RegExp("hello","g");

这样一行JS代码,经JShaman(JShaman是国内知名的JS代码混淆加密平台)加密后,可以成为:

var reg=new RegExp("\u0068\u0065\u006c\u006c\u006f","\u0067");

或者:

var _0x73d8bg=["hello","g"];var reg=new RegExp(_0x73d8bg[0],_0x73d8bg[1]);

又或者:

var _0xf=["97.108.101.101.102.","110."];function _0x3c(str,dy_key){dy_key=9;var i,k,str2="";k=str.split(".");for(i=0;i<k.length-1;i++){str2+=String.fromCharCode(k[i]^dy_key);}return str2;}var reg=new RegExp(_0x3c(_0xf[0]),_0x3c(_0xf[1]));

“字面量”形式的正则表达式不能直接加密

但是,正则表达式有两种写法,上面展示的是以“构造函数”方式进行定义,还有一种“字面量”方式。比如:

var reg = /hello/g;

“字面量”方式定义的正则表达式,是不能进行直接加密的。

在实际的编程中,难免会有“字面量”写法的正则表达式。

如何实现统一的正则表达式加密呢,即可处理“构造函数”,又可处理“字面量”。

方法当然是有的,比如:可以把“字量面”转化为“构造函数”。

把“字量面”正则表达式转化为“构造函数”

当然不是手动修改,那太不方便了,下面给出一段代码,在NodeJS中将“字面量”正则表达式转化为“构造函数”形式:

const parser = require('@babel/parser')
const traverse = require('@babel/traverse').default
const generator = require('@babel/generator').default
var types = require('@babel/types');

var js_code = `
function a(){
var reg1 = /hello/g;
var reg2 = new RegExp("hello","g");
}
`

var ast = parser.parse(js_code)

traverse(ast, {
RegExpLiteral(path){
//console.log(path.node.pattern, path.node.flags);
console.log(generator(path.node).code);

var pattern = path.node.pattern;
var flags = path.node.flags;
var new_expression = types.newExpression(
types.identifier("RegExp"),
[types.stringLiteral(pattern),types.stringLiteral(flags)]
)
path.replaceWith(new_expression);
}
})

console.log(generator(ast).code);

代码原理:

把JS代码,转为化AST(抽象语法树),从AST中检测“字面量”形式的正则表达式,并转化为“构造函数”形式,最后,再将AST转化为JS代码。

运行效果:

这样,转化后的正达式,就可以进行统一的混淆加密了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1536_AURIX_TriCore内核架构_Trap

全部学习汇总&#xff1a; GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 近段时间一直在跟trap打交道&#xff0c;但是处理得毫无头绪&#xff0c;因此找出来了这一章节看一下。暂时&#xff0c;这方面稍微有了一点框架感&…

观世界赛事,品足球人生--2022世界杯

观世界赛事&#xff0c;品足球人生 – 2022世界杯 1.卡塔尔世界杯百科 2022年卡塔尔世界杯&#xff08;英语&#xff1a;FIFA World Cup Qatar 2022&#xff09;是第二十二届世界杯足球赛&#xff0c;是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足…

iwebsec靶场 SQL注入漏洞通关笔记7- 空格过滤绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入&#xff08;宽字节注入&#xff09;_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入&#xff08;布尔型盲注&#…

关于mac上如何U盘

关于mac上如何U盘 背景 使用macbook的大概都会遇到 “如何连接U盘” 的问题&#xff0c;网上会搜到很多教程&#xff0c;我觉得很多都不太实用。 首先这个需求是有的&#xff0c;但是对很多人来说很低频几个月用不到一次&#xff0c;所以得找个顺手靠谱的方法。下面是我经历…

【机器学习入门项目10例】(十):PCA降维:简易人脸识别模型

🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 + 数据集 + 完整源码🐶🦜【机器学习项目实战10例目录】项目详解 + 数据集 +

C++——电话号码的字母组合问题

文章目录电话号码的字母组合题目链接思路&#xff1a;代码&#xff1a;调试演示电话号码的字母组合 题目链接 思路&#xff1a; 首先使用string类的数组存储每个数字对应的所有可能的字母&#xff0c;然后进行回溯操作。 string arr[] { "","","…

分享88个NET源码,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/1dPlj8w-rvVQXuJOHPO6tBA?pwddj0d 提取码&#xff1a;dj0d 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后可以看到。 启明星Appform员工请假系统 25175云酒店管…

微模块化炙手可热,数据中心走向智能化取胜

近年来&#xff0c;“微模块化”成为数据中心领域炙手可热的话题。 Gartner《企业数据中心未来趋势报告》预测&#xff0c;AI、5G、新型电池、模块化设计思想等将改变数据中心的未来&#xff0c;数据中心将走向分散化&#xff0c;并且预计到2025年&#xff0c;微数据中心的数量…

(附源码)python电影院信息管理系统 毕业设计 021844

电影院信息管理系统的设计与实现 摘 要 在信息飞速发展的今天&#xff0c;网络已成为人们重要的信息交流平台。电影院每天都有大量的信息需要通过网络发布&#xff0c;为此&#xff0c;本人开发了一个基于B/S&#xff08;浏览器/服务器&#xff09;模式的电影院信息管理系统。 …

你的NET程序需要保护吗?Agile.net 6.6.X 注入式Crack

Agile.net 使用专利技术将 MSIL 代码转换为虚拟操作码&#xff0c;只有安全的虚拟机才能理解。虚拟机直接处理虚拟操作码&#xff0c;模拟原始代码行为而不将代码转换回其原始形式。破坏保护成为NP完全问题&#xff0c;从而使Agile.net成为唯一保证您的代码不会被破坏的混淆器&…

【保姆级】手把手Debug循环依赖的整体流程

我们先看一下循环依赖&#xff0c;这样看、 或者这样看、 一提到循环依赖基本必提三级缓存&#xff0c;本篇又是篇保姆级的Debug教程&#xff0c;详解出现循环依赖Spring处理的全过程&#xff0c;之前也介绍过一些与本篇相关的内容&#xff1a; 想瞅瞅三级缓存的庐山真面目可以…

2022/11/27[指针] 指针与函数基础

程序&#xff1a;求10个数的最大数 1、定义指向函数的指针变量调用函数的方法 一般定义形式为&#xff1a;类型名 &#xff08;*指针变量名)()&#xff1b; #include<stdio.h> int main() {int i, m, a[10], max(int* p);int (*f)();for (i 0; i < 10; i)scanf_s(&q…

牛客网基础知识强化巩固-周结03

数组强化训练篇 2022-11-21 打卡 知识点总结 什么是渐进时间复杂度 渐进时间复杂度是指n趋于无穷时的复杂度。向有序表中任意一个位置插入元素&#xff0c;插入位置之后的元素依次挪动一个位置&#xff0c;假设元素插入的位置坐标为k&#xff0c;则时间复杂度为O(k)&#xf…

名词性从句

目录 1.名词性从句 1.1陈述句 1.2一般疑问句变名词性从句 1.3特殊疑问句变名词性从句 1.4特别的what 2.同位语从句 3.同位语从句与定语从句的区别 4.同位语从句的巅峰知识点 5.主语从句 5.2 并列主语从句 5.3主语从句巅峰知识点 6.宾语从句 主系表是不能被动的。所以第…

WPF-控件的常用属性-单例-隧道事件

特殊字符 小于< 大于> 空格xml:space"preserve" 例如&#xff1a;TextBox Grid.Column"1" xml:space"preserve">aaaaa .</TextBox> 从一个xaml文件中获取xaml内容 //DependencyObject是wpf控件的基类&#xff0c;它可以放到…

Ubuntu 安装“安装程序向硬盘复制文件时遇到错误[Errno 5] Input/output error”错误解决过程记录

前阵子装 Ubuntu&#xff0c;原本已经装了几百遍的系统它又双叒叕出问题了&#xff0c;问题内容就如标题看到的那样。解决过程中经历了很多坎坷&#xff0c;不过好在最后还是成功了~ 下面整理了一下我解决问题的过程&#xff0c;需要自取~ 方法 1&#xff1a;烧录 U 盘时文件格…

chapter3——处理多个时钟

目录1.多时钟域2.多时钟域设计的难题3.多时钟设计的处理技术时钟命名规则分模块设计跨时钟域4.跨时钟域同频零相位差时钟同频恒定相位差时钟非同频、可变相位差时钟整数倍频率的时钟非整数倍频率的时钟5.握手信号方法6.使用同步FIFO传输数据7.异步FIFO1.多时钟域 常见的多时钟…

linux环境验证c++程序库间调用

目录 0 背景 1 VMware、以及linux安装 2 安装QtCreator 2.1 下载速度慢&#xff0c;使用国内镜像 2.2 执行有问题&#xff0c;修改权限 2.3 验证是否可用 2.4 调试&#xff08;待解决&#xff09; 3 开发程序进行验证 4 其他问题 4.1 虚拟机与主机无法拷贝文件&#x…

python3-函数与参数以及空值

目录画星星空值None函数与Lambda一、函数定义二、引用变量查找三、传值调用函数四、函数对象五、函数文档旋转角度绘制函数图形画星星 程序2-7-7主要使用turtle.forward前进操作和turtle.left左转操作在屏幕上画星星。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- #2-7-…

操作符详解(1)

目录 一、操作符分类 二、算术操作符 三、位移操作符 1、<< 左位移操作符号 2、>> 右位移操作符 四、位操作符 1、& --- 按位与 2、| --- 按位或 3、^ --- 按位异或 变态题 五、赋值操作符 符合赋值符 一、操作符分类 操作符也被称为运算符。 …