zoukankan      html  css  js  c++  java
  • CTF<密码学> writeup 传统知识+古典密码

    小明某一天收到一封密信,信中写了几个不同的年份
              辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。

              信的背面还写有“+甲子”,请解出这段密文。

    key值:CTF{XXX}

    百度可以查到有关传统知识

    可以得到年份 list = [28,30,23,8,17,10,16,30]

    +甲子,意为加60年,新的list = [88,90,83,68,77,70,76,90]

    这些数字相隔不大,很容易联想到ascii码的对应的字符值:

    栅栏密码python 代码:

    list = [28,30,23,8,17,10,16,30]
    i=0
    while i<len(list):
        list[i]+=60
        i+=1
    s=""
    i=0
    while i<len(list):
        s+=chr(list[i])
        i+=1
    print s
    #s='abcdefgh'
    fac = [x for x in range(1,len(s))]
    i=1
    print fac
    for j in range(len(fac)):
        str1=''
        for i in range(fac[j]):
            k=0
            while i+k<len(s):
                str1+=s[i+k]
                k+=fac[j]
        print str1

    进行一轮栅栏算法解密得到的结果:

    XZSDMFLZ

    XSMLZDFZ

    XDLZMZSF

    XMZFSLDZ

    XFZLSZDM

    XLZZSDMF

    XZZSDMFL

    发现没有什么特别规律,然后对每一个进行凯撒解密,python代码如下:

    i=0
    s=input("Input the string:")
    s.upper()
    for j in range(25):
        str1=''
        for i in range(len(s)):
            str1+=chr((ord(s[i])-64+j)%26+64)
        print str1

    当试到第4个字符串时:

    XM@FSLD@

    YNAGTMEA

    @OBHUNFB

    APCIVOGC

    BQDJWPHD

    CREKXQIE

    DSFLYRJF

    ETGM@SKG

    FUHNATLH

    GVIOBUMI

    HWJPCVNJ

    IXKQDWOK

    JYLREXPL

    K@MSFYQM

    LANTG@RN

    MBOUHASO

    NCPVIBTP

    ODQWJCUQ

    PERXKDVR

    QFSYLEWS

    RGT@MFXT

    SHUANGYU

    TIVBOH@V

    UJWCPIAW

    VKXDQJBX

    flag就是SHUANGYU

  • 相关阅读:
    vsftp 虚拟用户测试
    RHEL7 MariaDB测试
    安装xenapp后,非管理员连接RDP出现桌面当前不可用的解决方法
    sqrt函数的实现
    O2O、C2C、B2B、B2C
    libsvm使用说明
    如何确定最适合数据集的机器学习算法
    知乎日报:她把全世界的学术期刊都黑了
    逻辑回归应用之Kaggle泰坦尼克之灾
    非均衡数据分布的分类问题
  • 原文地址:https://www.cnblogs.com/Dancing-Fairy/p/10795635.html
Copyright © 2011-2022 走看看