Jarvis OJ Crypto Writeup

本文详细介绍了参与[xman2019]系列解密挑战的过程,涉及Caesar密码、自定义Base64、RSA加密及Rabin算法。通过观察代码、分解素因数和运用特定解密技巧,成功解密并获得flag。
摘要由CSDN通过智能技术生成

[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 = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值