打开压缩包得到两个文件夹和两个文件,其中 encrypt.py 中是加密函数的代码, flag.enc 中是被加密 的秘钥, original 中是被打乱的小说片段, encrypt 中是加密并打乱后的小说片段。 分析代码可知,加密方法使用的是维吉尼亚密码,所以每次加密只会加密字符串中的字母,所以我们就可 以通过剩下没加密的字符来匹配明文和密文。 将明文和密文匹配之后,我们可以通过已知明文攻击快速的得到维吉尼亚密码的秘钥。 使用得到的秘钥解密 flag.enc 文件即可得到秘钥。

def decrypt(data, key):assert len(data) <= len(key)result = ""for i in range(len(data)):if data[i].isupper():result += chr((ord(data[i]) - ord('A') - key[i] + 26) % 26 + ord('A'))elif data[i].islower():result += chr((ord(data[i]) - ord('a') - key[i] + 26) % 26 + ord('a'))else:result += data[i]return resultm = 'Xiwoihp, Gaeasrvd jsf Sliuwe kkqpd ryix hh gkbh Omxnn ezxbi lvaqxxt nrflh, gpv pt yxx iw nls qioeds li qin bds vnef rts ghe ljez fu iywy vbm bwbe. Eke jvytzjn njps uag fh iujt qxehqqp rvseepu djdmg cep nmooryqzyav uu j gcr, nhag cybl kzvx aqsvvdvujy vm lhk Rmooeqfn eaww pthlowyav btng cpy yhpsnyael ov tae xbbf ufzfpbszk, oshfucs ql pma jol po lcp ysywc. Aa jgz heu vcdzf cmqy oufk pmag umt kcss ljml Fniejxqf'
c = 'However, Benjamin and Clover could only be with Boxer after working hours, and it was in the middle of the day when the van came to take him away. The animals were all at work weeding turnips under the supervision of a pig, when they were astonished to see Benjamin come galloping from the direction of the farm buildings, braying at the top of his voice. It was the first time that they had ever seen Benjamin'
k = []
for i in range(len(m)):t = ord(m[i]) - ord(c[i])k.append(t)c = "xaawr{B0_d0l_cs0m_'Pp0mn-odn1vpabt_deqzcq'?}"
t = decrypt(c, k)
print(t)

crypto——明文攻击相关推荐

  1. 密码学--CTF Crypto 总结

    密码学简介 密码学(Cryptography)一般可分为古典密码学和现代密码学. 其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰 ...

  2. CTF ——crypto ——RSA原理及各种题型总结

    RSA原理及各种题型总结 Table of Contents 一,原理: 信息传递的过程: rsa加密的过程: 二,CTF 中的 常见的十种类型: 1,已知 p ,q,e   求 d? 2,已知 n( ...

  3. CTF Crypto RSA合集(新生赛难度)

    食用简介 下面是本人新生赛时遇到的一些RSA密码题,题目名后大概写有类型便于查找 题目较多可以选择性食用 1.buuctf RSA 题目:在一次RSA密钥对生成中,假设p=473398607161,q ...

  4. 基于Python实现的CTF Crypto加密解密工具

    纯小白,记录一下自己小学期内做的项目.基于Python实现一个能够对凯撒密码.维吉尼亚密码.栅栏密码.摩斯密码.Base64编码.Ascii编码.AES.DES.RSA.RC4的加密解密以及维吉尼亚密 ...

  5. BUUCTF Crypto题目记录

    MD5 e00cf25ad42683b3df678c61f42c6bda 进行MD5加密 flag{admin1} Url编码 %66%6c%61%67%7b%61%6e%64%20%31%3d%31 ...

  6. 【ctf】Crypto初步基础概要

    在CTF界中,真正的Crypto高手只要一张纸一只笔以及Python环境就可以称霸全场了.(虽然是玩笑话但却是事实) 当然了,密码学是整个网络安全的基础,不管你是否参加ctf类的比赛,对于密码的常识也 ...

  7. c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with Cinema 4D + Photoshop

    c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with C4D + PS c4d+ps打造抽象NFT加密艺术 Create Abstract NFT ...

  8. Python3模块Crypto改为pycryptodome

    安装: # 安装方式1: pip3 install pycryptodome# 安装方式2: pip3 install -i https://pypi.douban.com/simple pycryp ...

  9. go标准库的学习-crypto/aes

    参考:https://studygolang.com/pkgdoc 导入方式: import "crypto/aes" aes包实现了AES加密算法,参见U.S. Federal ...

最新文章

  1. vue循环中的v-show
  2. LeetCode 1805. 字符串中不同整数的数目(哈希set)
  3. Java使用继承的语法是,Java基础语法八 继承
  4. ruby array_Ruby中带有示例的Array.shuffle方法
  5. Java :内部类基础详解
  6. 创建表的时候要添加目标语句use
  7. 对于java中接口的作用与理解
  8. Unity项目文件夹结构
  9. 安卓应用改了图标无效,是缓存的问题
  10. delphi 鼠标获取窗口句柄_pygame--创建一个简单的窗口
  11. word安全模式解除方法!
  12. Flutter FFI实践
  13. 算法---找出数组中的所有孤独数字(Kotlin)
  14. 大地坐标系、地理坐标系、投影坐标系
  15. 互联网装修还有多少机会?
  16. cisco 交换机 获取 转发表_思科交换机端口号、终端IP地址和MAC地址的互查
  17. 在文件管理器中显示图片的缩略图和视频第一帧的缩略图
  18. 在Ubuntu手机平台上创建一个HTML 5的应用
  19. 获取计算机名和局域网内的工作组名称
  20. 面向对象编程是什么意思

热门文章

  1. 数据库分片教程mysql_简述MySQL分片中快速数据迁移
  2. 课程及其编码字典python_【课程15】Python字典
  3. 怎么看java中ide_如何在eclipse IDE中查看Java的字节码?
  4. 一套模块化数据中心培训资料
  5. 罕见图像揭秘苹果Mesa数据中心
  6. linux搭建宝塔重启mysql_宝塔面板安装 重启等命令linux系统重启
  7. DL之SqueezeNet:SqueezeNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  8. 成功解决TypeError: unsupported operand type(s) for %: 'NoneType' and 'dict'
  9. 成功解决IndexError: arrays used as indices must be of integer (or boolean) type
  10. HighNewTech—2019CES:历史性!百度用自家的自动驾驶物流,把一个快递送到了 2019CES会场