python base64编码_MISC入门之Base64编码求解

云影安全

YunYingSEC

Python对于自定义字符表的Base64编码求解

           

    说到自定义字符表(Alphabet Table)解码Base64,我们先得知道Base64是如何进行编码操作的。接下来我们先来介绍一下Base64是怎么进行编码的。

01

首先我们引入ASCII码表

5fc27a0f4eb78251f46261996f4d7f74.png

02

转化

 一个字节是8个比特,先找到对应的ASCII码,再将其转化为8位的二进制,转化如下:

H 对应码值为72,它对应的二进制是 01001000

e对应码值为101,它对应的二进制是:01100101

l对应码值为108,它对应的二进制是:01101100

l对应码值为108,它对应的二进制是:01101100

o对应码值为111,它对应的二进制是:01101111

Base64的码值是0-63,所以用6位的二进制就可以完全表示Base64的码值(如:000000对应十进制0,111111对应的十进制为63),将上面8位一组的二进制变成6位一组的二进制,由于上面是5*8=40个二进制,不能被6整除,所以要加一组0将其变成48个二进制数(如果还是不能整除,还要继续补8个0,其实就是最小公倍数的倍数)。

原来:01001000 01100101 01101100 01101100 01101111 00000000

现在:010010 000110 010101 101100 011011 000110 111100 000000

03

Base64

然后将6位一组的二进制计算出十进制,再跟Base64的编码表做对比,再将最后补位的0变成=,即可得到Base64字符

010010 对应二进制是:18,18对应Base64字符为:S

000110 对应二进制是:6, 6对应Base64字符为:G

010101 对应二进制是:21, 21对应Base64字符为:V

101100 对应二进制是:44, 44对应Base64字符为:s

011011 对应二进制是:27, 27对应Base64字符为:b

000110 对应二进制是:6,  6对应Base64字符为:G

111100 对应二进制是:18, 18对应Base64字符为:8

000000 补位的0变成=

所以Hello对应的Base64编码就是:SGVsbG8=

而我们在上述过程中多少数字对应的多少的Base64字符,这个就是使用了Base64标准的Alphab Table,标准得Table如下:

f62fddf630110f6df82d150d3f49d1e4.png

我们在使用Python去解决自定义表的Base64编码的时候,我们该怎么去做呢?接下来进行到我们的正题:

其实很简单,我们将自带的Base64中他的原始Table使用str中的maketrans类进行替换即可,为什么呢?

我们通过上述的编码过程可以进行分析,我们在编码的过程中只是在最后使用到了表,但是实际上表所对应的我们原始的数据信息是不变的,所以我们先对编码过的内容字符进行替换即可得到正常的Base64编码,我们在进行解码即可。

于是我们得到了如下的代码:

f8f0035af5d2dc545c9c22c186254a36.png

上述代码是一个将表替换为:

“ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/”的代码。

我们再来看看如何进行编码

d777fd9c949223c494209c267a4609e1.png

上述就是使用替换字符表的加密编码。

这次的代码很简单,但是要理解str字符串类中的translate方法是包含了maketrans这种子方法的。

dbf7843386287e95db42b11681d4c22d.png

更多精彩内容

关于最近“O泡果奶事件”的思考与分析

人物访谈录|风华少年总裁,扎根网络安全

人物访谈录|对话网安少年,踏上网安之道

BurpSuite如何抓住你心中可爱的小数据包

Crypto知识点讲解之RSA(一)

区块链技术初探(一)

CTF二进制方向入门指北之RE(1)

参加,CTF竞赛!

踏上,网安之道

0c239d1b2499fd2bc2ca15df40b4b7bc.png

b0a6d38588f070629f2e5552878d4487.png

扫码关注我们

图文:云影安全 GG

排版:云影安全 night

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值