有人在群里发了一个challenge来求助,然后随手试了一下。

这是随手写的解题报告,转载请保留:http://blog.csdn.net/fcxxzux/article/details/53232361

对于此题内容,如有侵权,请立刻告知,会立刻删除的。
If the sharing of this problem offended your right, please inform me, and I’ll delete it immediately.


challenge文件获取方法:
整个文件太小了,我们用base64吧!
请打开https://www.hitoy.org/tool/file_base64.php,把以下内容粘贴进去,文件后缀为tar.gz,然后点提交,就可以下载了。

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

整个challenge是一个压缩包,
ts_challenge.tar.gz
|-tests\      小文件一堆,.in和.out配对的,
|-challenge1.rst   一个文本文件,可读的题目描述
|-challenge2.rst   一个文本文件,里面乱的一锅
|-Makefile     只负责编译 vigenere.c
- vigenere.c    好像是一个加密和解密程序?

下面是大段留白,谨防剧透用的。
可以先拉到最后去下载这个题目,试一试,再看分析。

challenge1.rst 给出了一个shell脚本。

脚本干了什么?

计算53cr3t-整数 这样的字符串的sha1值,判断算出来开头是不是d51ab ,如果是,就停下,并解密challenge2.rst

题目提示,这个脚本每秒只能处理几百个,为什么?

脚本里每步操作(echo、sha1num、grep)都相当于启动了一个进程,然后杀掉,能不慢吗?

怎么办?

自己动手写个能独立算完的程序啊!
如果能的话,多线程起来啊!

你好啊,Visual Studio ,你好,C#!

要啥功能直接搜,然后东拼西凑出来:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.Diagnostics;namespace Challenge{class Program {static void Main(string[] args) {Stopwatch watch = new Stopwatch();watch.Start();Parallel.ForEach(System.Linq.Enumerable.Range(0, int.MaxValue/1000000), x => {SHA1 sha = new SHA1CryptoServiceProvider();for (int i = x * 1000000; i <= (x + 1) * 1000000 && i >= 0; i++) {byte[] result = sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes("53cr3t-" + i));if (result.Length != 20) continue;if (result[0] == 0xd5 && result[1] == 0x1a && (result[2] & 0xf0) == 0xb0) {Console.WriteLine("Found " + i);for(int j=0;j<20;++j)Console.Write(result[j].ToString("x2"));Console.WriteLine();}}if(x%100==0)Console.WriteLine("x = " + x + " Done.");});watch.Stop();Console.WriteLine(watch.ElapsedMilliseconds);}}
}

稍微解释一下。
先开计时(以便知道最终跑了多久),
之后一层Parallel.ForEach ,是让库自动安排任务,自动进行多线程计算。
里面就是我们要进行的计算任务了:SHA1哈希计算,然后比对前5个16进制表示,如果满足条件,就输出出来。

这样快吗?是够快了,一秒钟处理1e6(一百万)没问题。
但是解太多了吧(每1百万里有1~2个解的样子)!要一个个试过去?

观察提示,发现:

The Vigenère cypher was invented in the 16th century... it might be not very secure.
(这个(challenge2所用的)加密方法是16世纪发明出来的,可能不够安全)

我们试着暴力破解一下?

Vigenère cypher这里就不多解释了,请点这里自行阅读

考虑:密钥长度我们知道吗?
知道!SHA1算出来的hash值是长40位的16进制数串。
我们知道了头5位,不妨看看,根据已有信息,我们能解密出什么:
(以下,未知部分用 * 替代)

Almos**
*********************************angua***********************************of C,****
*******************************arati*********************************** prog****
******************************* befo*********************************** be
de***********************************gram *********************************** of f*********************
************** and ***********************************tions*************
**********************, you***********************************hical***********
************************ossib*********************************** prin*****
******************************an fi***********************************pairs*************************

这里有一些突破口:befo**——肯定是before啊
然后猜出来密钥下2位是5f
继续不停往下猜,这样能猜到前10位是d51ab5f73c
——够了,冲突概率低到1/2401/2^{40}了

然后简单修改C#代码(补上前10位判断),
(具体来说,把中间那行if判断换成:

if (result[0] == 0xd5 && result[1] == 0x1a && result[2] == 0xb5 && result[3] == 0xf7 && result[4] == 0x3c) 


再跑,结果嘛——

跑了40分钟,(基本上)全部测完,只找到一组,用这个解密一下,得到challenge2的题面。

我就不贴了,太无聊了,不就是个拓扑排序吗?
要求字典序最小的拓扑排序?直接用堆就好了。
函数名是英文字符串,怎么参与建图嘛?
先把所有函数名找出来,然后排序、按字典序编号,然后不就是数值了?

#include <algorithm>
#include <map>
#include <vector>
#include <string>
#include <queue>
#include <iostream>
using namespace std;int main(){freopen("test.in","r",stdin);freopen("test.out","w",stdout);vector<string> caller,called;vector<string> funcs;map<string,int> dict;string a,b,c;while(cin>>a>>b>>c){caller.push_back(a);called.push_back(c);funcs.push_back(a);funcs.push_back(c);}sort(funcs.begin(),funcs.end());funcs.erase(unique(funcs.begin(),funcs.end()),funcs.end());size_t n=funcs.size();for(size_t i=0;i<n;i++){dict[funcs[i]]=i;}vector< vector<int> > G(n);vector<int> in_degree(n);for(size_t i=0;i<caller.size();i++){int fa=dict[caller[i]],fb=dict[called[i]];G[fb].push_back(fa);in_degree[fa]++;}priority_queue<int,vector<int>,greater<int>> q;for(int i=0;i<(int)n;i++){if(!in_degree[i]){q.push(i);}}vector<int> ans;while(!q.empty()){int x=q.top();q.pop();ans.push_back(x);for(size_t i=0;i<G[x].size();i++){int y=G[x][i];--in_degree[y];if(!in_degree[y]){q.push(y);}}}if(ans.size()!=n){cout<<"impossible\n";}else{for(size_t i=0;i<ans.size();i++){cout<<funcs[ans[i]]<<"\n";}}return 0;
}

最后,把所有提供的测试数据加到评测工具里去,代码放进去,测试一下:

ok,非常好,全部通过了,收工。

DSLAB programming challenge相关推荐

  1. Gym101521GHIJKL-----La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2016

    La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2016 文章目录 La Salle-Pui Ching Programming Challeng ...

  2. La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2016 A~F

    La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2016 A~F 文章目录 La Salle-Pui Ching Programming Chal ...

  3. Gym101522GHIJKL----La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

    La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017 文章目录 La Salle-Pui Ching Programming Challeng ...

  4. La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017

    A Ambiguous Dates 贪心,从小到大取日期 #include<bits/stdc++.h> using namespace std; #define For(i,n) for ...

  5. gym101522 [小熊骑士限定]La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017...

    西瓜队(划掉),Kuma Rider久违的第一场训练,四小时瞎打.jpg A.水题,排序 #include<cstdio> #include<iostream> #includ ...

  6. La Salle-Pui Ching Programming Challenge 2017 Gym - 101522A,B,C,D,H,I,K

    A题: 计算模糊日期的天数,简单思维题,注意long long #include<stdio.h> #include<string.h> #include<algorit ...

  7. Expert C Programming 阅读笔记(~CH1)

    P4: 好梗! There is one other convention-sometimes we repeat a key point to emphasize it. In addition, ...

  8. 第一章第一个c#程序上机_我从第一个#100DaysOfCode中学到的东西

    第一章第一个c#程序上机 On May 17th, I completed my first round of #100DaysOfCode. In case you haven't heard, # ...

  9. 程序设计竞赛资源索引

    如果想提高编程能力,最重要的就是多练多学,现在网络上提供了大量的习题库,可以很方便的练习编程. ACM/ICPC题库(支持c,c++,java,pascal): 台州学院acm :有不少习题使用中文描 ...

最新文章

  1. 无穷级数求和7个公式_双色球2019129期渗透围红蓝(6+1实战,附:7个双色球胆码公式)...
  2. gradle项目 避免每次下载gradle文件/解决依赖下载慢的问题
  3. 服务器虚拟化平台:VMWare ESX 3.5安装图记
  4. 类似百度输入框自动完成
  5. [HAOI2007] 理想的正方形
  6. linux命令dmesg查看进程被杀死原因
  7. [LeetCode] Length of Last Word - 最后一个单词的长度
  8. 基于 Docker Compose 实践 .NET Core 的现代化架构 2:在容器中集成 Skywalking APM
  9. java 空包_圆通快递接口,圆通快递礼品商城接口、圆通空包接口,圆通快递低价接口,礼品商城接口、一件代发接口...
  10. 小小c语言贪吃蛇思路,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  11. linux下转移mysql目录
  12. 安装与测试Hypopg(适用于pg9.0版本以上)
  13. Excel技巧之减肥
  14. VLN论文英语表达积累
  15. c语言版计算坐标方位角,直线坐标计算程序
  16. 【Python】新华字典(bushi
  17. 给测试小姐姐的第三封信 | ORACLE存储过程知识分享和测试说明
  18. 如何解决因涉及不良信息导致QQ互联审核不通过?
  19. 网盘限速怎么办? 小编来支招!
  20. java-常量和变量

热门文章

  1. ie 浏览器直接打印与非ie
  2. 不成熟男人的表现 --转载
  3. shell脚本----正则表达式
  4. Vue2 Api 总结大全
  5. android 电视安装apk文件损坏,android – 如何解决由于APK文件无效导致安装失败?...
  6. 电商产品设计:后台营销功能模块设计-优惠券活动(三)
  7. 计算机二级题型介绍,计算机二级MS_Office考试PPT题型汇总附答案[实用].pdf
  8. Android(12)浅析 偏好设置 Preference(一)
  9. 从量化度诉常的术标底不赚
  10. 人工智能芯片发展 (1