Base64简单介绍

在python中,对encodeURIComponent的使用避坑指南 例如在 URI 中,有一些特殊字符具有特殊的含义,例如 (:,/,?,#) 等,如果 URI 中包含这些特殊字符,并且它们不是作为字符的一部分出现(例如在查询参数中),就需要对它们进行编码,以免与 URI 的语义产生冲突。如何在python中进行使用呢?该字符是保留的,但在典型用法中,quote 函数被调用在保留现有斜杠字符的路径上,这就解释了前面我们举例当中,为啥"/"没有被编码的原因了。你这样编码以后去发请求,肯定是不对的,经过细心观察以后,我们发现【: , [ ]】这四个字符是不会被编码的。 阅读详情

1.

昨天的《MIME笔记》中提到,MIME主要使用两种编码转换方式----Quoted-printable和Base64----将8位的非英语字符转化为7位的ASCII字符。

虽然这样的初衷,是为了满足电子邮件中不能直接使用非ASCII码字符的规定,但是也有其他重要的意义:

a)所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑;

b)能够对文本进行简单的加密。

2.

首先,简单介绍一下Quoted-printable编码转换方式。它主要用于ACSII文本中夹杂少量非ASCII码字符的情况,不适合于转换纯二进制文件。

它规定将每一个8位的字节,转换为3个字符。

第一个字符是"="号,这是固定不变的。

后面二个字符是二个十六进制数,分别代表了这个字节前四位和后四位的数值。

举例来说,ASCII码中"换页键"(form feed)是12,二进制形式是00001100,写成十六进制就是0C,因此它的编码值为"=0C"。"="号的ASCII值是61,二进制形式是00111101,因为它的编码值是"=3D"。除了可打印的ASCII码以外,所有其他字符都必须用这种方式进行转换。

所有可打印的ASCII码字符(十进制值从33到126)都保持原样不变,"="(十进制值61)除外。

3.

下面,详细介绍Base64的编码转换方式。

所谓Base64,就是说选出64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。

具体来说,转换方式可以分为四步。

第一步,将每三个字节作为一组,一共是24个二进制位。

第二步,将这24个二进制位分为四组,每个组有6个二进制位。

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。

第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

  0 A  17 R   34 i   51 z

  1 B  18 S   35 j   52 0

  2 C  19 T   36 k   53 1

  3 D  20 U   37 l   54 2

  4 E  21 V   38 m   55 3

  5 F  22 W   39 n   56 4

  6 G  23 X   40 o   57 5

  7 H  24 Y   41 p   58 6

  8 I   25 Z   42 q   59 7

  9 J  26 a   43 r   60 8

  10 K  27 b   44 s   61 9

  11 L  28 c   45 t   62 +

  12 M  29 d   46 u   63 /

  13 N  30 e   47 v

  14 O  31 f   48 w   

  15 P  32 g   49 x

  16 Q  33 h   50 y

因为,Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右。

4.

举一个具体的实例,演示英语单词Man如何转成Base64编码。

Text contentMan
ASCII7797110
Bit pattern010011010110000101101110
Index1922546
Base64-EncodedTWFu

第一步,"M"、"a"、"n"的ASCII值分别是77、97、110,对应的二进制值是01001101、01100001、01101110,将它们连成一个24位的二进制字符串010011010110000101101110。

第二步,将这个24位的二进制字符串分成4组,每组6个二进制位:010011、010110、000101、101110。

第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节:00010011、00010110、00000101、00101110。它们的十进制值分别是19、22、5、46。

第四步,根据上表,得到每个值对应Base64编码,即T、W、F、u。

因此,Man的Base64编码就是TWFu。

5.

如果字节数不足三,则这样处理:

a)二个字节的情况:将这二个字节的一共16个二进制位,按照上面的规则,转成三组,最后一组除了前面加两个0以外,后面也要加两个0。这样得到一个三位的Base64编码,再在末尾补上一个"="号。

比如,"Ma"这个字符串是两个字节,可以转化成三组00010011、00010110、00010000以后,对应Base64值分别为T、W、E,再补上一个"="号,因此"Ma"的Base64编码就是TWE=。

b)一个字节的情况:将这一个字节的8个二进制位,按照上面的规则转成二组,最后一组除了前面加二个0以外,后面再加4个0。这样得到一个二位的Base64编码,再在末尾补上两个"="号。

比如,"M"这个字母是一个字节,可以转化为二组00010011、00010000,对应的Base64值分别为T、Q,再补上二个"="号,因此"M"的Base64编码就是TQ==。

6.

再举一个中文的例子,汉字"严"如何转化成Base64编码?

这里需要注意,汉字本身可以有多种编码,比如gb2312、utf-8、gbk等等,每一种编码的Base64对应值都不一样。下面的例子以utf-8为例。

首先,"严"的utf-8编码为E4B8A5,写成二进制就是三字节的"11100100 10111000 10100101"。将这个24位的二进制字符串,按照第3节中的规则,转换成四组一共32位的二进制值"00111001 00001011 00100010 00100101",相应的十进制数为57、11、34、37,它们对应的Base64值就为5、L、i、l。

所以,汉字"严"(utf-8编码)的Base64值就是5Lil。

java编码之BASE64 因为在Android逆向分析中需要定位到网络请求模块,并对网络请求,一般为http请求进行捕获,但是http请求提中的数据一般都经过加密处理,所以,在逆向分析中也需要通过了解一定的加解密算法才能知道其加密的方法,并从反编译代码中获取其加密算法,然后抓包并分析其敏感数据。 因为之前一直做应用层,虽说用到了http,但由于负责后台javaEE的同学也是个新手,所以并没有用到什么加解密算法进行处理,对 阅读详情

相关推荐

JavaScript:实现将字节数组转换为 base64 编码算法(附完整源码)

JavaScript:实现将字节数组转换为 base64 编码算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2298

Base64编码长度的计算

首先明确对Base64的理解 Base64的编码都是按字符串长度,以每3个8bit的字符为一组, 然后针对每组,首先获取每个字符的ASCII编码,然后把ASCII编码转换成8bit二进制,得到24bit; 再把这24bit每六个划分,高位用0补齐,得到4个8bit的字节, 然后再将这4个8bit的字节转换成十进制,对照Base64编码表, 得到对应编码后的字符。 如果字符串的长度不能被3整除,多出来的部分用0补齐,对应的输出字符为“=” Base64的编码长度至少比原来长三分之一。 关于Base6

曰业而安的博客 1万+

Python常用模块 之 base64:处理 base64 编码和解码

Python常用模块 之 base64:处理 base64 编码和解码

孤寒者的博客 3万+

为什么mysql中不应该使用utf8编码

为什么mysql中不应该使用utf8编码 因为MySQL的utf8编码最多只能够存储3个字节的字符,而一般的utf8编码能够存储4个字节的字符。 也就是说对于中文他应该能够正常存储,但是对于一些需要占用4个字节的字符他就不能够处理了,例如emjoy符号。 虽然最多只能表示3个字节的utf8在一般的场景下并没有什么问题,但是最好还是避免使用mysql的utf8而使用utf8mb4 ...

weixin_43464294的博客 580

URL编码转换,escape() encodeURI() encodeURIComponent()

escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是 。unescape方法与此相反。不会被此方法编码的字符: @ * / +英文解释:MSDN JScript Reference: The escape method returns a string value (in Unicode format) that contains the contents of [the argument]. All 

基因家族扩张收缩分析可视化(CAFE5)

CafePlotter 是一个用于可视化 CAFE5 基因家族扩张收缩分析结果的 Python 工具

xuzhougeng blog 3628

简单介绍BASE64Encoder的使用

BASE64Encoder 其实是在jkd中的,但是默认不开放,在API中也是找不到的 所以先看看怎么将其导入: 右击项目--build path-->>configure build path-->> 双击Access rules-->>edit-->>edit-->> 修改为accessible,Rule Patter...

BarryLee的博客 2万+

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

【Qt】【Base64】 Base64简单介绍和Qt下Base64编解码

什么是Base64: 参考: Base64编解码及其C++实现 什么是Base64? “Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。 Base64,就是使用64个可打印字符来表示二进制数据的方法。 我:简单的来说就是把二进制的数据,按每6位(2的6次方=64)读取再转换为可打印字符(64个,且...

weitaming1的博客 2519

【FPGA】Robei EDA 的使用(7)—— Robei文件上板试验

#沐朝露兮以自华,觅大道兮以求成 我又滚过来了,研究了20多天RISCV,结果最后因为硬件问题导致无法在比赛中使用RISCV CPU,虽然已经临近比赛后期了,非常的崩溃,但是也没有什么办法。唉,一切不过是从头再来罢了。(写写博客舒缓我心中苦闷) ————————————————进入正文的分割线———————————————— 今天介绍一下如何利用 Robei EDA 生成文件,导入vivado中,综合下载到开发板里。拿我一个PWM控制舵机的代码为例。 Robei EDA设置 假设代码模块(model文件)经

Ninquelote的博客 2561

win11系统ping另一台电脑上VMware虚拟机的IP

我是用了两台电脑,所以刚才遇到一个问题就是两台电脑的IP 在同一局域网内ping不通。于是就找了很多资料,经过坚强的绝望后终于解决了。 下开始解决问题: VMWare提供了三种工作模式:bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。 1. bridged(桥接模式)   在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚

qq_42817360的博客 3236

Java Base64简单介绍

java base64 示例代码

心流时间的博客 1160

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 170

java BASE64Encoder详细介绍及简单实例

java BASE64Encoder详解 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在发送电子邮件时,服务器认证的用户名和密码需要用Base64编码,附件也需要用Base64编码。 Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。 原文的字节最后不够3个的地方用0来补足,转换时Base64编码用=号来代替。这就是为什么有些.

loliDapao的博客 9368

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信

优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信今天开始会陆续介绍一些优秀的开源项目,项目基本都是和FPGA或HDL相关的。对于一些找工作或者急需项目经验的人来说,这些项目...

OpenFPGA的博客 8117

《拉依达的嵌入式\驱动面试宝典》—Linux篇(八)_Linux驱动编程

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 319

base64 编码简单介绍

-------------------------------------------------------------------------------- 一. base64 编码表 base64 是将8位转成6位再编码, 6位编码有64个编码空间,用52个字符A-Za-z,10个数字0-9 加两个符号+ / 共64个可视符号表示。 = 为padding 符号,补齐用。 3个8位为一...

hjjdebug的专栏 918

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

Android 加密 MD5和Base64简单介绍

今天了解了下加密,因为我的账号系统的密码是没有进行加密的,是将密码,用户名等信息作为post参数传递的。 MD5加密 先看下MD5加密,网上搜索到了很多方法,我挑一个简单的方法先展示出来,以后有兴趣再深入学习。 转载自:http://blog.youkuaiyun.com/randyjiawenjie/article/details/6589489 http://libin52008.bl

super_mt的博客 3529

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

简单介绍使用图片 base64 编码的优点和缺点。

base64 编码是一种图片处理格式,通过特定的算法将图片编码成一长串字符串,在页面上 显示的时候,可以用该字符串来代替图片的 url 属性。 使用 base64 的优点是: (1)减少一个图片的 HTTP 请求 使用 base64 的缺点是: (1)根据 base64 的编码原理,编码后的大小会比原文件大小大 1/3,如果把大图片编码到 html/css 中,不仅会造成文件体积的增加,影响文件的加载速度,还会增加浏览器对 html 或 css 文件解析渲染的时间。 (2)使

CjBkl的博客 1447

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

简单介绍使用图片 base64 编码的优点和缺点?

一、写在前面 base64编码是一种图片处理格式,通过特定的算法将图片编码成一个长串字符串,在页面上显示的时候,可以用该字符串来代替图片的url属性。 二、使用base64的优点是: 1、减少一个图片的http请求。 三、使用base64的缺点是: 1、根据base64的编码原理,编码后的大小会比原文件大小大1/3,如果把大图片编码到html/css中,不仅会造 成文件体积增加,影响文件的加载速度,还会增加浏览器对html或css文件解析渲染的时间。 2、使用base64无法直接缓存,要缓存只能缓存包含b

weixin_47450807的博客 3315

【Python语音识别系列】base64编码和解码的简单介绍与应用(案例+源码)

base64编码和解码的简单介绍与应用(案例+源码)

数据杂坛 644

java中base64导哪个包_Base64Util导包报错

package com.yuming.util;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.Inpu...

weixin_34457571的博客 2726

Base64 HTML

Base64 HTML代码: base64在线转换工具 <style type="text/css"> /*清除浏览器的默认样式*/ *{ margin: 0; padding: 0; } /* * 定义选择栏样式 */ .select_menu{ height: 30px; width: 800px; background-color: cornflowerblue; margin: 30

weixin_45258996的博客 241

Base64简介

前言这是我第一次写博客,想理理自己这些年来积累的代码,了解的一些规范,希望也能帮到一些人更好的理解。本博客不会以太专业的角度来写,主要是以我自己的理解为主。如果写的不好,或有什么错误的地方欢迎指正;如果觉得对你有所帮助,请留言鼓励一下;如果有什么更好的想法,欢迎留言交流。文中未尽之处,欢迎留言询问,我会尽快回复,谢谢!~我目前主要做Android开发,另外也熟悉其他多种语言,今后会在博客中慢慢涉及。

易凌风 2826

base64解码与编码离线脚本

在CTF比赛中,常常会遇到base64码,由于某些比赛中是不能联网的,因此也就不能使用在线工具,不过在线工具还是有的,但离线工具我觉得可以不用但是必须得有。

2401_82703634的博客 1869
上一篇: 密码学简单理解
下一篇: 数据类型和Json格式
ArtisticProgramming
博客等级 码龄8年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值