[BJDCTF 2020]base??(古典密码)

ops/2024/9/23 14:26:13/

题目:

从题目我们看出dict是一个python的字典,但与原始的base64的表不同,所以我们想到通过替换原始的表,来对密文解密。

my_dict={0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='}keys=''
for key in my_dict:keys+=my_dict[key]
print("keys=",keys)
string1=keys[:64]
print("string1=",string1)
import base64
import string
str1='FlZNfnF6Qol6e9w17WwQQoGYBQCgIkGTa9w3IQKw'string2='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'##标准的 base64 字符串 string2
print(base64.b64decode(str1.translate(str.maketrans(string1,string2))))
print("映射",(str.maketrans(string1,string2)))
print("映射2",(str1.translate(str.maketrans(string1,string2))))
'''
`str.maketrans(string1, string2)` 方法用于创建一个映射表,其中 `string1` 是原始字符集,`string2` 是目标字符集。这个方法返回一个映射表,该表可以用于 `str.translate()` 方法来进行字符替换。这里的映射原理是将 `string1` 中的每个字符映射到 `string2` 中的对应位置的字符上,实现一一对应的替换关系。具体来说,如果 `string1` 和 `string2` 的长度不同,那么将会以较短的字符串长度为准,多余的字符将被忽略。举个简单的例子:假设有两个字符串 `string1 = "ABC"` 和 `string2 = "XYZ"`,那么映射关系就是:- 将字符 `'A'` 替换为 `'X'`
- 将字符 `'B'` 替换为 `'Y'`
- 将字符 `'C'` 替换为 `'Z'`如果我们使用 `str.maketrans(string1, string2)`,它将返回一个映射表,该表可以将字符串中的 `'A'` 替换为 `'X'`,`'B'` 替换为 `'Y'`,`'C'` 替换为 `'Z'`。这个映射表可以用于 `str.translate()` 方法,用来对字符串进行替换操作,实现自定义的字符映射关系。
'''


http://www.ppmy.cn/ops/23539.html

相关文章

java开发常用工具类(持续更新...)

文章目录 一、apache.commons.lang31、StringUtils字符串工具类1.1、判断字符串是否为空1.2、截取字符串1.3、判断字符串内容类型 2、ObjectUtils工具类2.1、判断对象是否为空2.2、对象为null返回默认值 3、DateUtils日期工具类3.1、日期加减法 二、google.guava1、普通集合2、…

苍穹外卖day8(1)地址簿功能

文章目录 前言一、产品原型二、数据库设计三、接口设计、代码实现1. 新增地址2. 查询登录用户所有地址3. 查询默认地址4. 修改地址5. 根据id删除地址6. 根据id查询地址7. 设置默认地址 前言 这部分主要是对用户端中地址簿的一些增删改查操作,业务逻辑比较简单&…

TCP和UDP

文章目录 TCP和UDP的比较TCP(传输控制协议)UDP(用户数据报协议)总结 TCP和UDP的比较 TCPUDP是否连接面向连接无连接是否可靠可靠传输,使用流量控制和拥塞控制不可靠传输,不使用流量控制和拥塞控制连接对象…

七彩虹(Colorful)隐星P16 2023款笔记本电脑原装出厂Win11系统镜像下载 带建Recovery一键还原功能

七彩虹原厂Windows预装OEM专用系统,恢复出厂开箱状态一模一样 适用型号:隐星P16 23 链接:https://pan.baidu.com/s/1Ig5MQMiC8k4VSuCOZRQHUw?pwdak5l 提取码:ak5l 原厂W11系统自带所有驱动、出厂时自带的主题与专用壁纸、系…

MySQL8.0新特性

1、新增降序索引 MySQL 5.7:在语法上支持降序索引,但实际上创建的仍然是升序索引 MySQL 8.0:真正支持降序索引(只有Innodb存储引擎支持降序索引) # MySQL 5.7演示 mysql> create table t1(c1 int,c2 int,index i…

Pinia在Vue 3项目中的应用

Pinia是一个用于Vue 3的状态管理库。它旨在提供一个简单而强大的解决方案,用于在Vue 3项目中管理应用程序的状态。下面是Pinia在Vue 3项目中的一些常见应用示例: 创建和管理全局状态:Pinia允许您在应用程序中创建和管理全局状态。您可以使用P…

【leetcode】数组和相关题目总结

1. 两数之和 直接利用hashmap存储值和对于索引&#xff0c;利用target-nums[i]去哈希表里找对应数值。返回下标。 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> mp;vector<int> res;fo…

的记忆:pandas(实在会忘记,就看作是一个 Excel 表格,或者是 SQL 表,或者是字典的字典。)

pandas 是一个开源的 Python 数据分析库&#xff0c;它提供了快速、灵活和富有表现力的数据结构&#xff0c;旨在使“关系”或“标记”数据的“快速分析、清洗和转换”变得既简单又直观。pandas 非常适合于数据清洗和转换、数据分析和建模等任务。以下是 pandas 的基本概念和主…