Hex编码与Base64编码

article/2025/9/11 4:33:04

Hex编码与Base64编码

  • 什么是明文
  • 什么是编码
  • Hex编码
    • Hex编码实现细节
    • 自定义Hex编码
  • Base64编码
    • Base64编码实现细节
    • 自定义Base64编码

什么是明文

介绍什么是编码之前,首先了解下什么是明文,表示其本身意思的,他就是明文

比如你看到"E6988E",如果是明文他就代表他自己,也就是当他表示"E6988E"时,
但是他如果是Hex编码后的,那他就代表"明"

什么是编码

由于计算机存储的都是二进制数,得通过编码转换成人能认识得东西,中文就是UTF8编码或者Unicode编码后的结果有些网站不想让你看到他发送至服务端的数据,会通过加密算法对数据进行加密(对字节进行位运算),加密完把字节toString会导致乱码(位运算完的字节大多数无法在UTF8码表或者Unicode编码中找到可见字符),所以有了Hex编码和Base64编码

Hex编码

Hex编码是一种用16个字符(0123456789ABCDEF)表示任意二进制数据的方法,是一种编码,并非加密字符编码,“明"通过Hex编码后是"E6988E”
在这里插入图片描述

Hex编码实现细节

	//查看com.sun.org.apache.xerces.internal.impl.dv.util下HexBin类可知static public String encode(byte[] binaryData) {if (binaryData == null)return null;int lengthData   = binaryData.length;//由此可见,Hex编码的字节长度是原字节长度的2倍int lengthEncode = lengthData * 2;char[] encodedData = new char[lengthEncode];int temp;for (int i = 0; i < lengthData; i++) {temp = binaryData[i];//这里是有符号数转无符号数if (temp < 0)temp += 256;//lookUpHexAlphabet就是码表//取当前字节的高四位encodedData[i*2] = lookUpHexAlphabet[temp >> 4];//取当前字节的低四位encodedData[i*2+1] = lookUpHexAlphabet[temp & 0xf];}return new String(encodedData);}

在这里插入图片描述

由此可知,Hex编码就是分别获取前字节的高四位和低四位转换成十进制数,当作索引去码表里面获取对应的字符拼接返回
二进制数00000000-00001111代表的范围是0-15,和码表里面的字符一一对应
PS:8位为一个字节,取出来四位后会在前面补零,然后转10进制

自定义Hex编码

了解清楚Hex编码的实现机制后,就可以开始自定义Hex编码了,能看到这里把HexBin的方法扣过来,编码出来的结果是一样的,改一下码表就能实现自定义Hex编码了
在这里插入图片描述
当我们把码表换了后,编码出来的数据与之前完全不一样了,因为相同的索引对应的字符已经不是之前那个了,如果需要解码成功,也需要更换解码的码表,否则会乱码
在这里插入图片描述

Base64编码

Base64是一种用64个字符表示任意二进制数据的方法,是一种编码,并非加密字符编码
由 A-Z a-z 0-9 + / 和补充字符 “=” 组成,Base64编码后的字符数是4的倍数(不足会补"=")

Base64编码实现细节

具体和Hex编码类似
Hex编码是4个比特转换成一个新的字符串,Base64是6个比特转换成一个新的字符串,而6个比特(0011 1111)最能表示的十进制数为63,加上0为64,跟进源码可以看出,Base64有俩码表
在这里插入图片描述
因为"+“和”/"出现在url中的话,后端接收会出问题
在这里插入图片描述

什么时候补"="
比如针对字符"S",字符"S"在UTF8码表中为:83,所以字符串"S"的二进制数为:0101 0011
由于Base64编码以6个比特位一组进行编码,所以可以写为:010100 11
由于不足补零得到二进制数:010100 110000
Base64编码后的字符数是4的倍数所以得到二进制数:010100 110000 000000 000000
然后6个比特为一组,转换成十进制数可得:2048,由于后面俩组比特位是补位来的,会直接转换成"="字符
在Base64码表中20对应得字符是"U"Base64码表中48对应得字符是"w"
PS:标准的Base64码表是A-Z a-z 0-9 + / 按顺序来的
所以字符串"S"Base64编码结果位:Uw==

在这里插入图片描述

自定义Base64编码

和自定义Hex编码同理,修改码表即可,对应解码也需要使用修改后的码表


http://chatgpt.dhexx.cn/article/V7uKStbF.shtml

相关文章

Base64编码linux服务器与网页编码不一致问题

一、起因 在一次环境变量注入的时候&#xff0c;使用Base64将密码编码传入&#xff0c;但是传入后无法登录&#xff0c;但是登录到容器内&#xff0c;使用明文却能登录 二、排错过程 出现这种问题&#xff0c;首先判断密文是否有误&#xff0c;但是在linux服务器内反复base64&…

mysql 图片base64_关于图片的Base64编码

什么是Base64编码 Base64编码是一种图片处理格式,通过特定的算法将图片编码成一长串字符串,在页面上显示的时候,可以用该字符串来代替图片的url属性。 base64编码就是长得像下面这样子的代码: thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg== 上面…

前端Base64编码

Base64编码 什么是Base64编码 我们所看到的网页上的每一个图片&#xff0c;都是需要消耗一个 http 请求下载而来的&#xff0c;不管如何&#xff0c;图片的下载始终都要向服务器发出请求&#xff0c;要是图片的下载不用向服务器发出请求&#xff0c;而可以随着 HTML 的下载同…

图片Base64编码

图片处理在前端工作中可谓占据了很重要的一壁江山。而图片的 base64 编码可能相对一些人而言比较陌生&#xff0c;本文不是从纯技术的角度去讨论图片的 base64 编码。标题略大&#xff0c;不过只是希望通过一些浅显的论述&#xff0c;让你知道什么是图片的 base64 编码&#xf…

什么是Base64 编码,Base64 编码有哪些优缺点?

很多朋友在工作中&#xff0c;可能经常会用到Base64编码。Base64编码是网络上很常见的用于8Bit字节码的编码方式之一&#xff0c;那么&#xff0c;大家知道为什么要使用Base64 编码&#xff0c;Base64 编码有哪些优缺点呢&#xff1f;下面&#xff0c;我们一起来研究一下。 什…

前端Base64编码知识,一文打尽

原文: https://juejin.cn/post/6989391487200919566 作者: 云的世界 掘金专栏: 前端基础进阶 大厂技术 高级前端 Node进阶 点击上方 程序员成长指北&#xff0c;关注公众号 回复1&#xff0c;加入高级Node交流群 前言 本文将详细的介绍前端 Base64 编码知识&#xff0c;探索…

Python模板库Mako的语法

原文链接&#xff1a;http://www.yeolar.com/note/2012/08/28/mako-syntax/ Mako模板从一个包含各种类型的内容的文本流解析得到&#xff0c;包括XML、HTML、email文本等。模板还可以包含Mako指令&#xff0c;用来表示变量和表达式替换、控制结构、服务器端注释、整块Python代码…

Django mako 的使用(七)

Django mako 的使用 6.6 mako 的使用 6.6 mako 的使用 安装 mako pip install mako 创建子应用 makos python .\manage.py startapp makos 创建 base_render.py 文件 from django.http import HttpResponse from django.template import RequestContext from django.templat…

mako模版库实践

介绍 这几天在编写一个数据驱动测试框架&#xff0c;其中一个核心模块是根据数据输入&#xff0c;自动转换为测试用例代码。测试数据格式固定&#xff0c;对应的用例代码结构也相对稳定。基于此场景&#xff0c;联想到web页面根据数据从template渲染页面&#xff0c;决定使用类…

Django——mako的配置与使用方法

一、前言 mako最大的特点就是允许在HTML中随意书写Python代码&#xff0c;挺起就很心动啊&#xff01;&#xff01; 二、准备阶段 新建一个项目mako_project&#xff0c;再新建一个app叫app&#xff0c;然后安装mako&#xff08;要联网安装&#xff09; pip install mako然…

Xen新特性

4.0 为了增强主机层面的性能和可扩展性&#xff0c;新的Xen 4.0虚拟机管理程序现在横跨主机服务器上的128(之前64 )个物理处理器&#xff0c;最多可以处理1TB的物理主系统内存。在访客环境中&#xff0c;基于Xen 4.0运行的虚拟机现在可以分配给多达128个虚拟处理器/VCPU(不过…

Xen - Networking

Xen - Networking Step 0 : Xen底下的網路架構 Step 1 : 虛擬還是實體 Step 2 : network-bridge Step 3 : network-nat Step 4 : network-route Step 5 : 參考網頁 Step 0 : Xen底下的網路架構 在虛擬化下的環境就屬網路裝置最為複雜難懂,不過模式大致可以畫分成 3 種 1.netw…

Xen虚拟化之一:Xen环境组件详解

Xen是一个开放源代码虚拟机监视器(Virtual Machine Monitor&#xff0c;简称为VMM)&#xff0c;由剑桥大学开发&#xff0c;它致力于实现在单个计算机上运行多达128个有完全功能的操作系统。Xen通过一种叫做半虚拟化(paravirtualization)的技术获得高效能的表现&#xff08;较少…

浅谈Xen和半虚拟化技术

研究生入学的时候&#xff0c;看了一篇论文——《Xen and the art of virtualization》。现在时隔一年&#xff0c;准备对此进行一番整理。下文是我Xen为例的半虚拟化技术的理解&#xff1a; 虚拟机概况 首先从虚拟机说起&#xff0c;虚拟机技术最早由IBM于上世纪六七十年代提…

xen架构

Xen是一个虚拟机监视器&#xff08;Virtual machine monitor&#xff09;&#xff0c;针对X86系列计算机设计&#xff0c;它能够支持多个客户计算机的同时运行&#xff0c;并且能够达到较好的一个性能水平和资源隔离。Xen是一个开放源代码软件&#xff0c;在GNU General Public…

Xen概述

http://my.oschina.net/davehe/blog/94039 1 Xen概述 1.1 简介 Xen是由剑桥大学计算机实验室开发的一个开源项目。是一个直接运行在计算机硬件之上的用以替代操作系统的软件层&#xff0c;它能够在计算机硬件上并发的运行多个客户操作系统&#xff08;Guest OS&#xff…

KVM和Xen虚拟化有什么区别?Xen和KVM优缺点对比

KVM和Xen是两大虚拟化技术&#xff0c;KVM和Xen又是免费开源的管理程序&#xff0c;新手站长网分享虚拟化技术KVM和Xen的区别优势对比&#xff1a; KVM和Xen的区别 KVM&#xff1a;KVM是轻量级的虚拟化管理程序模块&#xff0c;该模块主要来自Linux内核&#xff1b;KVM的虚拟…

Xen与XenServer的区别

说到XenServer&#xff0c;总是离不开Xen&#xff0c;所以我要说他们的区别&#xff0c;得首先从Xen开始说起&#xff01; Xen体系架构 Xen hypervisor体系架构 Xen 的 VMM ( Xen Hypervisor ) 位于操作系统和硬件之间&#xff0c;负责为上层运行的操作系统内核提供虚拟化的硬件…

xen的安装

一、 Xen介绍 : 在虚拟化软件的部份&#xff0c;可分为VMWare、Xen、KVM、VritualBox是较为常见的。在Xen这到自由软件上主要可分为半虚拟化(Para-virtualization) 及全虚拟化 (Full virtualization) 两种&#xff0c;其中半虚拟化主要是透过修改 Linux 核心来达成的虚拟技术。…

虚拟机体验之 Xen 篇 —— 令人脑洞大开的奇异架构

转载于https://www.cnblogs.com/youxia/p/linux022.html#_label0 阅读目录 总结&#xff1a; 这一篇我要体验的虚拟机系统是 Xen。在虚拟机领域&#xff0c;Xen 具有非常高的知名度&#xff0c;其名字经常在各类文章中出现。同时 Xen 也具有非常高的难度&#xff0c;别说玩转…