Python:base64随机编码和解码

本文探讨了Python中使用base64、base32、base16进行随机编码加密的过程,以及如何通过异常处理和递归解码策略恢复明文。详细介绍了编码解码的思考、10次循环编码的实现、递归简化解码方案,并通过实例解释了三种编码的理解。
摘要由CSDN通过智能技术生成

问题描述

jxb撰写本文的目的,在于总结一次编写Python程序及其延申学习的过程,主要涉及:

  1. 导入base64模块,使用10次随机编码来加密一段数据;
  2. 使用异常处理的方式恢复明文;
  3. 针对解码时出现问题的思考;
  4. 使用10层循环的解密;
  5. 使用递归函数改进10层循环方案
  6. base16,base32,base64编码过程的理解实例

随机编码加密flag

思路:进行10次循环,每层循环在0,1,2中随机选择1个数字作为列表list中的序号,列表的每个元素是一个进行base16、base32或者base64编码的匿名函数,编码结果作为下一层编码的输入。

from base64 import *
import random
flag = "flag{**jxb**}".encode("utf-8")    
#使用encode("utf-8"),是把str型转为bytes型,base64等编码时需要二进制数据
list = [lambda x:b16encode(x),lambda x:b32encode(x),lambda x:b64encode(x)]
for i in range(10):
    choice = random.choice([0,1,2])
    flag =list[choice](flag)
with open('encoded.txt','w') as fp:
    fp.write(flag.decode("utf-8"))

使用字典实现上述功能的对应改动:

encode={
   
    '16':lambda x:b16encode(x),
    '32':lambda x:b32encode(x),
    '64':lambda x:b64encode(x)
}     #列表实现中的list
choice = random.choice(['16','32','64'])
flag =encode[choice](flag)

使用异常处理恢复明文

解码时出现问题的思考

from base64 import *
flag1 = "jxbh*".encode("utf-8")
test1 = b32encode(flag1)
print(b64decode(test1))
#运行结果:
# b'4\x9e\x06\x13`J'

# base16:ASCII字符
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值