最近一直在学习CTF密码学相关问题 以下列举几道被恶心的不要不要的题目,顺便分享一些思路和做法。
检查符号
截取一段电波,一不小心全变成了泡泡。你能够解密吗?
"o00。o。o0oo。0o0o。000。00。o。0。000。ooo0。o。0o。oo0。ooo。0o0o。0。oo0o"
答案格式:key{flag},flag是解密内容
拿到此题,观察像是摩斯电码加密,电波里句号是分隔符,让它变成空格,然后o变. 0变-使用notepad++即可实现。摩斯电码如下:
.-- . .-.. -.-. --- -- . - --- ...- . -. ..- ... -.-. - ..-.
解密网站
拿到字符串WELCOMETOVENUSCTF,不要急着提交,不然会提示你ERROR的。。。回过头看看题目里的TIPS,检查符号!大写变小写~好了这只是最温柔的一个坑。。。
第二道:
规则很公平
vv公司称,他们给出了最为公平的游戏规则,你能猜到是什么吗?
规则:CGOCPMOFEBMLUNISEOZY.
附件:CULTREABDFGHIKMNOPQSVWXYZ.
答案的格式是key{xxxxx},所以答案是
首先Tips就是公平,你会发现Playfair这个东西,做密码表然后开始解密吧!
接下来就走上了非对称算法:RSA的不归路。。。
先简单看一下什么是RSA吧:
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
再来看一下具体的加解密算法:
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。RSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、****q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2×e1)≡1(mod(p-1)×(q-1))。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A≡B^e2( mod n);B≡A^e1 (mod n);(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A≡B^e1 (mod n);B≡A^e2( mod n);
那么开始肝题吧:
得到了公钥,怎么才能解密呢?
tip分解n,答案格式ISG{flag}
RSA分解
在public.pem里是标准公钥文件,使用Openssl对其进行提取,可以得到十六进制的大数n和模数e,本题的难点就在于分解n,将一个大数分解为两个质数的乘积。。