Bugku CTF 密码学刷题

本文分享了作者刷密码学题目的心得,涵盖古典密码、替换密码、摩斯密码、脑筋急转弯等,通过实例解析和解密技巧,展示了古典密码的魅力和解题过程的乐趣。

前言

          密码学可以分为古典密码学和现代密码学。古典密码学主要由单表替代、多表替代等加密方法组成,现代密码学则主要包含对称加密、非对称加密、哈希、数字签名等内容。我呢,更偏爱古典密码哈哈哈,趁着课少,赶快刷题,冲鸭!!!

这里自夸一下嗷,我写的wp还是非常详细的,每一题我也都配上了解题思路和超链接,方便大家直接拿到flag,当然了做一题肯定是要拿下它的,理解后积累的知识才是最宝贵的,加油!


一、抄错的字符

题目描述:
在这里插入图片描述额其实这题挺麻烦的,思考了一会,主要是一个个列举他的换算大小写字母及数字,优先级:数字 > 小写字母 > 大写字母,然后将枚举出来的字符进行解密直接上脚本:

//python3
import base64
s = "QWIHBLGZZXJSXZNVBZW="
dic = {
   
   'I': '1', 'B': '6', 'S':'5','G': '9','Z':'2'}
res = ''

def check(s):
    f = True
    s = str(s)
    for i in range(len(s)):
        if ((s[i] in list('_+=')) or s[i].isdigit() or s[i].isalpha()):
            continue
        else:
            f = False
            break
    return f


def strcon_decode(s,i):
    global res
    if(i==4):
        ss = ''.join(s)
        sss = base64.b64decode(ss)
        sss = str(sss)[2:-1]
        if check(sss):
            # print(ss+' decode: ' + sss)
            ss = res + sss
            res = ss
            return True
        else:
            return False
    else:
        if s[i] in dic.keys():
            ss = s
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值