2019“嘉韦思杯”3.30初赛一部分Write Up
同学们TQL。佩服李长兴同学的超神瓜皮思维。
一、飞虎队(希尔密码)
本题是我今天大部分时间的花费处。先百度学习了希尔密码,然后尝试手动计算逆矩阵和矩阵乘法,还求助于线性代数课本,可谓苦不堪言。

做题千万条,数学第一条。线代学不好,老师两行泪。
简要介绍希尔密码
希尔密码是以矩阵的线性方式为加密方式。将26个字母分别对应0到25这26个数字(之前我还徘徊过A对应0还是1,想到取余数会有0,所以确定从0开始),明文排成一个含n个m维列向量(即m * n矩阵)的矩阵M的格式。密钥K为n * n矩阵。加密方式为:密文X=(明文M 乘 密钥K)Mod 26。解密方式为:明文M=(密钥K的逆矩阵K^-1 乘 密文X)Mod 26。
使用MATLAB进行计算。
一开始我也是手算的,然而徘徊于0和1如何抉择,列和行如何计算,算出的分数如何取整,负数如何化正,可谓是心力交瘁。最终我决定怒占室友电脑,使用MATLAB来进行计算问题,以把自己解放于思考更高层次的问题。
1.计算密钥的逆矩阵。下图中x为原密钥,xx为x的逆矩阵。

大家看图里那些小数哦,我手动算的时候是以3为底的分数,是完全匹配的。可是使用分数进行下面的计算会很伤脑筋啊。于!是!我找到了一篇深度好文,里面介绍了如何处理分数问题,具体的与矩阵的计算原理有关,这里我就采取了最小公倍数法,让xx矩阵乘上数27,则不会影响结果。

下一步呢,继续处理xx,手动把每一个数改成0到25的值,该取模的取模,该加上n倍26的加。

2.逆矩阵与密文相乘。下图中xx为密钥的逆矩阵,密文为a。

nia!这样就算出来了,然后大家都取个模(这里我是写了个C程序然后手动一个个输入算出的,别嫌笨||)
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
printf("%d\n", n%26);
return 0;
}
手动把这些数按格式记在纸上!

然后!对照我们的字母数字表,ding!flag出现辣!


那么flag就是flag{hillisflagxx},结束。
二、死亡真相
那么下面这一题就完全是马老师@李长兴的功劳了。(为了凑题所以我把他解的题放在我WP上了:p)
首先用音频软件(我使用的是AU)打开文件,直接就看到了一个flag有木有。

得到flag:85a9d4517d4725_b9_8cbc9fd_554216
(让我想到了b站上有段时间臭名昭著的图像midi...)
然鹅啊,介并不是最终的flag。而且尝试了一些解码后也解不开。下面我就跪服马老师的想法了。他竟然把这里的下划线全都换成0(此处应有惊叹),然后md5解密就结束了。


所以答案是flag{hsd132456},完成。
赛后...

我和室友们又有新游戏可以玩了:)
2019“嘉韦思杯”3.30初赛一部分Write Up的更多相关文章
- 2019嘉韦思杯线上初赛writeup
1 土肥原贤二 看到页面怀疑是sql注入,写了个4'进去就发生报错.could not to the database You have an error in your SQL syntax; ch ...
- 2019“嘉韦思”杯RSA256题目wp
首先我们从网站下载了一个压缩包,解压出来一看里面有2个文件 首先我们先打开fllllllag康康,结果发现是一串乱码,这时候第一反应就是,文件被加密了,再看fllllllag下面的gy.key文件,更 ...
- 上海嘉韦思杯部分writeup
第二题 打开赛题,看到加密字符串,进行base64解密,发现是JSFUCK,再次解密,控制台得到flag. 第三题 打开频谱图得到flag,flag中有三个_,联想到音频文件详细信息中的三个zero, ...
- 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...
- 2019 年百度之星·程序设计大赛 - 初赛四 1001 Strassen
比赛链接:2019 年百度之星·程序设计大赛 - 初赛四 题目链接:HDU-6719 Strassen C++ 没写出来 于是直接上 Java 暴力. 好像可以用 __int128. import j ...
- 2019年全国高校计算机能力挑战赛初赛C语言解答
http://www.ncccu.org.cn 2019年全国高校计算机能力挑战赛分设大数据算法赛,人工智能算法赛,Office高级应用赛,程序设计赛4大赛项 C语言初赛解答 1:编程1 16.现有一 ...
- 蓝桥杯近三年初赛题之一(15年b组)
临近比赛,自己定时做了近三年的初赛题,不是很理想,10道题平均做对5+道.为了这次比赛,总共做了200题左右吧,估计去北京参加决赛有点难,不过不管怎样,对得起自己万余行代码就好. 一.15年初赛题(第 ...
随机推荐
- java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理
本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...
- 钱管够,你能接这个项目吗?+ tomcat源码分析
最近看了几个咕泡学院的公开课,课堂老师讲到下面这两个经历. 1:钱给够,你有没有能力接下这个全国性的项目 平时也会有怀才不遇的时候,但是当你遇到这个机会的时候,有没有信心去接下这个单子呢? 信心和能力 ...
- 汇编实验1(又是作业emm)
实验任务:学会使用debug 1.使用Debug,将程序段写入内存: 机器码: b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 ...
- Vue通过路由 query传递参数
父组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rout ...
- 【linux日常】 ACL权限管理
ACL ((Access Control Lists) setfacl命令 这里引用一个非常详细的命令介绍. 要点: getfacl -R 递归获取acl权限,可以存储为文件以备还原 g ...
- day-13装饰器
函数的嵌套定义 概念:在一个函数的内部定义另一个函数 为什么要有函数的嵌套定义:1)函数fn2想直接使用fn1函数的局部变量,可以将fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变量2 ...
- jmeter的简单http接口用法
1. jmeter的启动:windows下的环境 进入jmeter的并目录双击启动 Mac电脑 进入bin目录找到jmeter.sh 文件 在终端执行./jmeter.sh 或者./jmeter. ...
- @cacheevict 清除多个key
@Caching(evict={@CacheEvict(“a1”),@CacheEvict(“a2”,allEntries=true)}): 参考:https://www.cnblogs.com/ha ...
- 常用Linux终端命令行的快捷键列表
终端有很多快捷键,不太好记,常用的在这里 Ctrl+r 实现快速检索使用过的历史命令.Ctrl+r中r是retrieve中r. Ctrl+a:光标回到命令行首. (a:ahead) Ctrl+e:光标 ...
- JAVA 注解和反射
通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...