[xman2019]xcaesar
题目给出了提示,和凯撒密码有关,打开下载完的.py文件观察代码
def caesar_encrypt(m,k):
r=""
for i in m:
r+=chr((ord(i)+k)%128)
return r
from secret import m,k
print caesar_encrypt(m,k).encode("base64")
#output:bXNobgJyaHB6aHRwdGgE
可以看出加密过程是先进行了一次凯撒,再进行了一次base64加密
反过来base64解密再凯撒解密就可以得出答案
[xman2019]xbase64
提示是base64,观察下文件代码
# /usr/bin/python
# encoding: utf-8
#逆排序表
base64_table = ['=','A', 'B', 'C', 'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a', 'b', 'c', 'd','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0', '1', '2', '3','4','5','6','7','8','9',
'+', '/'][::-1]
def encode_b64(s):
l = len(s)
i = 0
result = ''
while i < l:
# 将字符转换为二进制编码,然后对齐
s1 = s[i]
b1 = bin(ord(s1))[2:] #返回字符的二进制编码,bin()函数返回值以0b开头,用切片从index=2位置开始取,去除0b
cb1 = b1.rjust(8, '0') #rjust()函数是右对齐函数,通过在左边补0将编码扩充至8位
i += 1
if i >= l:
cb2 = '00000000'
else:
s2 = s[i]
b2 =