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

news2025/1/16 11:14:28

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

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

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逆向的逻辑中。

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

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

相关文章

京东API商品详情页,商品列表数据,商品评论数据采集

作为国内最大的电商平台之一,京东数据采集具有多个维度。 有人需要采集商品信息,包括品类、品牌、产品名、价格、销量等字段,以了解商品销售状况、热门商品属性,进行市场扩大和重要决策; 京东数据采集的方法 既然京…

面试 4

1、作用域 w3scholl中定义:作用域指的是您有权访问的变量集合。 作用域是指在程序中定义变量的区域,该位置决定了变量的生命周期。通俗理解,作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期。 在…

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

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

Golang interface 多态/类型断言

基本介绍 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的(接口能够体现多态的特征)。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 在前面的Usb接口案例,u…

【01】LVGL-CodeBlock模拟器安装 | LVGL工程下载 | PC端模拟LVGL步骤

LVGL模拟器 1.LVGL模拟器介绍2.Windows环境搭建CodeBlock及获取LVGL工程3.PC端模拟LVGL4.总结 1.LVGL模拟器介绍 LVGL模拟器:使用PC端软件模拟LVGL运行,而不需要任何嵌入式硬件。优点:便于学习、跨平台协同开发 2.Windows环境搭建CodeBlock及…

【每日一题】—— B. Arrays Sum (Grakn Forces 2020)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

GO 语言的方法??

GO 中的方法是什么? 前面我们有分享到 GO 语言的函数,他是一等公民,那么 GO 语言中的方法和函数有什么区别呢? GO 语言中的方法实际上和函数是类似的,只不过在函数的基础上多了一个参数,这个参数在 GO 语…

深度学习(12)之模型训练[训练集、验证集、过拟合、欠拟合]

模型训练[训练集、验证集、过拟合、欠拟合] 在不断补充训练数据集的过程中,发现纯粹增加数据集并不会使得模型效果单向地变好,如果是多目标检测模型的话,常会出现精度变低的现象本文想总结在模型训练时的一些注意事项,比如训练集…

云务器迁移(腾讯云>华为云)

自己平时除了写些bug外还喜欢玩玩服务器,这不前几年买了一个域名,当时服务器买的是阿里云的,想着域名备案挺麻烦的就一直用着,只是在服务器到期后会重新购买其他运营商的(关键是续不起🤫) 这不最…

华为eNSP配置专题-VRRP的配置

文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…

基于Java的企业门户管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

linux性能分析(三)查看系统的性能指标

一 查看系统的性能指标 这里简略的将系统监控指标分为:cpu、memory、disk、network、os 五大类强调: 这五类命令的输出与/proc虚目录下的文件信息强相关说明: 后续专门讲解这五大类的系统命令,尽可能全面罗列每个工具的使用场景补充&#x…

智能水印相机微信小程序源码

相信大家日常在生活中或者工作中都有使用过水印相机来拍照记录吧,但是又要在手机上面多下载一个APP。 那么小编今天给大家带来一款智能水印相机,拍照自动添加时间、地点、经纬度等水印文字,可用于工作考勤、学习打卡、工作取证等&#xff0c…

深度学习 | Pytorch深度学习实践 (Chapter 1~9)

一、overview 基于pytorch的深度学习的四个步骤基本如下: 二、线性模型 - Linear Model 基本概念 数据集分为测试集和训练集(训练集、开发集)训练集(x,y)测试集只给(x)过拟合&#…

世界国家/地区行驶方向数据

Part1数据背景 道路通行方向规则是交通规则的重要部分之一。不同国家及地区通行方向并不一样,受风俗、习惯、风潮因素等影响。 最近也在学道路行驶,结果差强人意,继续努力吧。祝学车的小伙伴们一次过~ Part2数据详情 今天分享的国家/地区行…

二叉搜索树的详解及Map和Set的介绍

目录 1.二叉搜索树 1.1二叉搜索树的介绍 1.2.二叉搜索树的实现 1.2.1二叉搜索树的创建 1.2.2查找关键字 1.2.3插入 1.2.4删除 1.3二叉搜索树的性能分析 2.Map Map官方文档 2.1Map 的常用方法说明 2.2关于Map.Entry的说明,> 2.3注意事项 2.4reeMap和HashMap的区别 …

Django小白开发指南

文章目录 HTTP协议socket实现一个web服务器WSGI实现一个web服务器WSGI实现支持多URL的web服务器WSGI实现图片显示的web服务器MVC && MTV1.MVC2.MTV3.总结 一、创建Django项目1.创建项目2.创建app3.第一次django 请求 二、模板1.配置settings.py2.模板语法3.继承模板 三…

[云原生1.]Docker数据管理与Cgroups资源控制管理

文章目录 1. Docker的数据管理1.1 数据卷1.1.1 示例 1.2 数据卷容器 2. 容器互联3. Cgroups资源控制管理3.1 简介3.2 cgroups的主要功能3.3 cpu时间片的简单介绍3.4 对CPU使用的限制3.4.1 对CPU使用的限制(基于单个容器)3.4.2 对CPU使用的限制&#xff0…

MySQL高可用架构学习

MHA(Master HA)是一款开源的由Perl语言开发的MySQL高可用架构方案。它为MySQL 主从复制架构提供了 automating master failover 功能。MHA在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的 master 节点,在…

基于Java的农资采购销售管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…