当前位置: 首页 > news >正文

JS加密/解密那些必须知道的事儿

在这里插入图片描述
一直以来,字符串的编码问题对于新手程序员来说,或者平常不太涉猎这方面的程序员来说,是犹如灵异学一样的存在。经常会遇到莫名其妙的编码问题,导致的各种的无法理解的错误。

​ 今天,本问就来介绍一下作者所知晓的一切的字符编码知识。

0x1.初识ASCII

​ 说起字符串编码,不得不说到现代计算机的起源,在二十世纪早期,美国的科学家和工程师开始研究并开发原始的计算机设备。一些早期的计算机设备和概念都是在美国发展的,为后来的计算机技术的发展奠定了基础。

​ 因此最早的计算机主要编码都是为了适应英文来设计的,英文由字母、数字、标点符号等组成。总计26个英文字母(不区分大小写)、10个数字(0-9)、大约32个常见标点符号(包括空格)

在这里插入图片描述

0x2.随着更多国家加入互联网,兼容语言日益重要

随着国际化的发展和不同国家语言的日益重要,需要一种能够表示更多字符的编码方式。因此,针对不同的需求,出现了一些扩展字符集和编码标准,其中两个最常见的是GBK和UTF-8。

  • GBK 是汉字内码扩展规范的简称,是在ASCII基础上的汉字编码扩展。它对中文进行了编码,并能够表示超过 20000 个中文字符。它兼容ASCII编码,并使用1个或2个字节来表示一个字符,使得它能够包含更多的字符。

    • 基本原理
      • GBK编码使用单字节编码和双字节编码混合的方式来表示字符。
      • 对于ASCII字符,使用单字节表示,编码和ASCII兼容。
      • 对于非ASCII字符(包括汉字等),使用双字节表示。
    • 编码范围
      • 单字节编码范围:0x00-0x7F,与ASCII相同。
      • 双字节编码范围:0x81-0xFE,两个字节的第一个字节在0x81-0xFE之间,第二个字节在0x40-0xFE之间(但不包括0x7F)。
    • 占位个数
      • 对于单字节编码的ASCII字符,占用一个字节(8位)。
      • 对于双字节编码的非ASCII字符,占用两个字节(16位)。
    • 编码规则
      • 对于双字节编码,第一个字节的范围确定了该字符的编码区,第二个字节的范围则确定了具体的字符。
      • GBK编码的中文字符通常使用两个字节表示,第一个字节的范围是0x81-0xFE,第二个字节的范围是0x40-0xFE(不包括0x7F)。
      • 例如,汉字“中”在GBK编码中的值是0xD6D0。
    • 兼容性
      • GBK编码是对GB2312编码的扩展,因此GB2312编码的中文字符在GBK中仍然能够正确解码。
      • 同时,GBK编码也与ASCII编码兼容,保证了在同一个文本文件中可以混合使用ASCII字符和汉字字符。
  • UTF-8 是一种针对Unicode的可变长度字符编码,它被设计用来在互联网上处理多种语言的文本。UTF-8 使用1至4个字节为每个字符编码,能够表示地球上几乎所有的文字。它是一种广泛使用的编码标准,可以表示包括拉丁字母、希腊字母、西里尔字母、亚美尼亚字母、希伯来字母、阿拉伯字母、叙利亚字母、泰米尔字母等在内的几乎所有的语言的字符。

    • 基本原理
      • UTF-8 使用 8 位字节序列来表示一个 Unicode 字符。
      • UTF-8 根据所表示的字符的不同范围,使用不同长度的字节序列表示字符。
    • 编码范围
      • 单字节编码范围:0x00-0x7F,与 ASCII 编码完全兼容。
      • 双字节编码范围:0xC2-0xDF,0x80-0xBF。
      • 三字节编码范围:0xE0-0xEF,0x80-0xBF,0x80-0xBF。
      • 四字节编码范围:0xF0-0xF4,0x80-0xBF,0x80-0xBF,0x80-0xBF。
    • 占位个数
      • 对于单字节编码的 ASCII 字符,占用一个字节(8 位)。
      • 对于多字节编码的 Unicode 字符,根据其在 Unicode 编码中的范围,使用 2 到 4 个字节(16 到 32 位)。
    • 编码规则
      • 对于单字节编码的 ASCII 字符,其最高位是 0。
      • 对于多字节编码的 Unicode 字符,每个字节的最高位都是 1,紧跟着的一个 0 位表示该字节不是编码的最后一个字节。
    关于了解这些字符编码特性的好处

    常见的可用于JS的加密/解密,不同字符编码之间的转换等特性都可以用于JS加密,同样可以用于JS逆向的逻辑中。

相关文章:

JS加密/解密那些必须知道的事儿

一直以来,字符串的编码问题对于新手程序员来说,或者平常不太涉猎这方面的程序员来说,是犹如灵异学一样的存在。经常会遇到莫名其妙的编码问题,导致的各种的无法理解的错误。 ​ 今天,本问就来介绍一下作者所知晓的一切…...

搭建伪分布式Hadoop

文章目录 一、Hadoop部署模式(一)独立模式(二)伪分布式模式(三)完全分布式模式 二、搭建伪分布式Hadoop(一)登录虚拟机(二)上传安装包(三&#xf…...

【C++】特殊类的设计(只在堆、栈创建对象,单例对象)

🌏博客主页: 主页 🔖系列专栏: C ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 文章目录 一、请设计一个类,只能在堆上创建对象二、 请设计一个类,只能…...

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测

分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测 目录 分类预测 | MATLAB实现基于GRU-AdaBoost门控循环单元结合AdaBoost多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于GRU-AdaBoost门控循环单元结…...

【Spring Boot项目】根据用户的角色控制数据库访问权限

文章目录 简介方法一添加数据库依赖配置数据库连接创建用户角色表创建Spring Data JPA实体和仓库实现自定义的网关过滤器配置网关过滤器几个简单的测试API 方法二创建数据库访问接口实现数据库访问接口创建用户角色判断逻辑创建网关过滤器配置网关过滤器 总结 简介 在一些特定…...

EthernetIP 转MODBUS RTU协议网关连接FANUC机器人作为EthernetIP通信从站

远创智控YC-EIPM-RTU网关产品是一款高效的数据采集工具,它可以通过各种数据接口与工业领域的仪表、PLC、计量设备等产品连接,实时采集这些设备中的运行数据、状态数据等信息。采集到的数据经过整合和运算等操作后,可以被传输到其他设备或者云…...

如何注册微信小程序

如何注册微信小程序 前言 因为最近沉迷和朋友们一起下班去打麻将,他们推荐了一个计分的小程序,就不需要每局都转账或者用扑克牌记录了,但是这个小程序不仅打开有广告,各个页面都植入了广告,用起来十分不适。 于是我…...

移动App安全检测的必要性,app安全测试报告的编写注意事项

随着移动互联网的迅猛发展,移动App已经成为人们日常生活中不可或缺的一部分。然而,虽然App给我们带来了便利和乐趣,但也伴随着一些潜在的安全风险。黑客、病毒、恶意软件等威胁着用户的隐私和财产安全,因此进行安全检测就显得尤为…...

DVWA-JavaScript Attacks

JavaScript Attacks JavaScript Attack即JS攻击&#xff0c;攻击者可以利用JavaScript实施攻击。 Low 等级 核心源码&#xff0c;用的是dom语法这是在前端使用的和后端无关&#xff0c;然后获取属性为phrase的值然后来个rot13和MD5双重加密在复制给token属性。 <script&…...

算法通关村第二关|白银|链表反转拓展【持续更新】

1.指定区间反转 1.1 头插法&#xff1a;将区间内遍历到的结点插入到起始处之前。 public ListNode reverseBetween(ListNode head, int left, int right) {ListNode dummyNode new ListNode(-1);dummyNode.next head;ListNode pre dummyNode;// 将pre移动到区间的前一位&a…...

开发者职场“生存状态”大调研报告分析 - 第四版

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…...

代码与细节(一)

在用到 Java17的新特性 Unmodifiable Lists 时不知道你是否和我有同样的惊讶 为什么弄了这么多重载方法&#xff1f; 先说结论&#xff1a;为了性能。 其实一细想&#xff0c;都能想明白&#xff1a;varargs(可变参数) 的背后是数组的内存分配和初始化&#xff0c;相比正常的…...

AI绘画使用Stable Diffusion(SDXL)绘制中国古代神兽

一、引言 说到神奇异兽&#xff0c;脑海中首先就会跳出我国古代神话传说中的各种神兽。比如青龙、白虎、朱雀、玄武&#xff0c;再比如麒麟、凤凰、毕方、饕餮等等&#xff0c;这些都是大家耳熟能详的的神兽。 这些神兽不仅体现了人们丰富的创造力和想象力&#xff0c;更是我…...

老卫带你学---leetcode刷题(148. 排序链表)

148. 排序链表 问题&#xff1a; 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a;输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a;输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1…...

21.1 stm32使用LTDC驱动LCD--配置说明

本文讲解如何配置LTDC驱动LCD的参数配置&#xff0c;以及CubeMx参数配置说明 本文使用的是淘宝买的一块带电容触摸的液晶显示屏&#xff1a;5寸TFT液晶显示屏高清800*480免驱40P通用RGBIPS全视角彩屏GT911 说实话&#xff0c;价格还是相对挺便宜的&#xff0c;值得入手&#xf…...

zabbix监控nginx的状态页面

zabbix监控nginx的状态页面 文章目录 zabbix监控nginx的状态页面1.环境说明2.所涉及到的知识点3.在nginx主机上安装zabbix_agent4.开启nginx状态显示页面5.进入zabbix的web页面配置主机&#xff0c;监控项&#xff0c;触发器5.1.添加主机5.2.创建监控项5.3.创建触发器 1.环境说…...

C语言初学者工具选择:vscode + MSYS2 + cmake 搭建 C环境

文章目录 前言1. MSYS2 安装1. 下载安装包2. 安装3. pacman 换清华大学源4. 安装 mingw-w64 toolchain 和 cmake ninja5. 将 toolchain 加入系统环境变量 2. 设置 vscode1. 必要的插件2. 一个简单的 vscode cmake 项目 最后C数据结构与算法CMake 前言 网上关于使用 vscode 配…...

【四:httpclient的使用】

目录 1、Demo案例2、请求一个带cookies的get请求3、请求一个带cookies的post请求案例一&#xff0c;案例二的properties的配置 1、Demo案例 public class MyHttpClient {Testpublic void test1() throws IOException {//用来存放我们的结果String result;HttpGet get new Htt…...

在innodb引擎中,count(*)、count(1)、count(主键)、count(字段)哪个性能最高?

在InnoDB引擎中&#xff0c;这四种计数值的效率高低取决于具体的数据库和数据表结构&#xff0c;无法一概而论哪个性能最高。不过&#xff0c;一般情况下可以按照以下顺序进行选择&#xff1a; count()&#xff1a;统计所有行的数量。由于InnoDB引擎的行锁是锁住整行&#xff…...

华为OD 跳格子2(200分)【java】B卷

华为OD统一考试A卷B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目&#xff0c;A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载&#xff0c;请点击此链接进入&#xff1a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...