首页 > 其他分享 >JS加密/解密那些必须知道的事儿

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

时间:2023-10-19 23:32:21浏览次数:44  
标签:编码 加密 字节 字符 解密 JS GBK 单字节 ASCII

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

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

0x1.初识ASCII

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

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

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

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,GBK,单字节,ASCII
From: https://blog.51cto.com/u_15785573/7943379

相关文章

  • NodeJS之父Ryan Dahl:我不想被认为是一个JavaScript专家
    NodeJS之父RyanDahl:我不想被认为是一个JavaScript专家    被称为Node之父的RyanDahl在2012年离开了Node项目,后来加入Google的Brain团队,从事深度学习方面的研究,主要专注在图像的着色和超解像技术上。拥有深厚数学功底的Ryan经历了从Web开发到深度学习的跨越,还主导了......
  • C# 实现MD5加密
    C#实现MD5加密C#MD5加密日常程序开发中,涉及到敏感数据内容,通常会采取加密处理以保证数据安全,本篇文章讲述了在C#中使用MD5方法加密数据MD5介绍MD5的全称是message-digestalgorithm5,MD5算法属于hash算法的一类,对消息进行运算,产生一个128位的消息摘要(32位数字字母),并且......
  • 泛微E-Office json_common.php文件存在sql注入漏洞
    漏洞简介泛微e-office为企业办公提供丰富应用,覆盖常见协作场景,开箱即用。满足人事、行政、财务、销售、运营、市场等不同部门协作需求,帮助组织高效人事管理。系统json_common.php文件存在SQL注入漏洞漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:POC:POST/building/......
  • 如何保护价值上千万的Node.js源代码?
    如何保护价值上千万的Node.js源代码?https://zhuanlan.zhihu.com/p/843864561|0一个强大的JS混淆器。github.com/javascript-obfuscator/javascript-obfuscator2|0一套JS代码安全问题解决方案。www.jshaman.com3|0一个极简的Node.js字节码编译器。github.com/OsamaAbbas/byte......
  • 用友时空KSOA dept.jsp SQL注入漏洞
    漏洞简介用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理,提升竞争能力,确保企业整体的战略目标以及创新活动的实现。系统dep......
  • 用友GRP-RMIS datalist.jsp SQL注入漏洞
    漏洞描述用友GRP-RMIS系统的datalist.jsp存在sql注入漏洞漏洞复现fofa语法:app="用友-GRP-RMIS系统"系统登录页面如下:POC:POST/datalist.jspHTTP/1.1Host:xxxxUser-Agent:python-requests/2.31.0Accept-Encoding:gzip,deflateAccept:*/*Connection:closeConten......
  • JSON 返回数据命名不规范问题
    问题描述后端代码如下:@DatapublicclassUserDto{privateStringmUserName;privateStringmPassword;}@RestController@Slf4jpublicclassUserController{@PostMapping("/user")publicStringgetUserData(@RequestBodyUserDtouserDto){......
  • 记一次在服务器上运行node.js程序时无法通过nohup xxx & 方式挂起的问题
       由于业务需求每天要在服务器上整理一组数据,为了方便就用node.js来写了。但是运行的时候发现了一个问题明明使用了nohupmain.js&的方式后台运行了程序但是一旦我关闭了shell控制台这个后台运行的程序也会跟着终止掉,不知道是什么原因,于是采用forever.js的方式来运行......
  • jsmind.js 思维导图
    参考npminstalljsmind--saveimport'jsmind/style/jsmind.css';importjsMindfrom'jsmind/js/jsmind.js';require('jsmind/js/jsmind.draggable.js');require('jsmind/js/jsmind.screenshot.js');文档......
  • js分片上传&断点续传
    原理js将大文件分成多分,全部上传成功之后,调用合并接口合成文件。如果传输中断,下次上传的时候过滤掉已经上传成功的分片,将剩余的分片上传,成功之后合并文件。前置条件获取uoloadId接口(用于标记分片)分片上传接口合成文件接口(后端自动合成则不需要)查询已上传的分片列表接口(断点......