amp丨∈Pow∈

本文档一共被下载: 次 ,您可全文免费在线阅读后下载本文档。

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

特别说明: 下载前务必先预览,自己验证一下是不是你要下载的文档。

  • 上传作者: (上传创作收益人)
  • 需要金币300(10金币=人民币1元)

此处会长期更新我做过的一些密码学题目。


欧拉函数:φ(n)是小于等于n的数中与n互质的数的数目。

快速幂取模:python实现


 
 


 
只要了解RSA的基本运作原理就可以解密了。
例题:HCTF GAME 密码学教室入门(一)

不解释,用python写个脚本:

 


 
表面上是个RSA,其实根本没加密。
例题:HCTF GAME 密码学教室入门(四)

 








 
两个常用的工具
在线分解大质数(不一定都能成功分解):
windows工具:
将n成功分解得到p,q。由p,q,e模反求得d。最后c,d,n求m。
例题:HCTF GAME 密码学教室进阶(五)

 


 
 

 
还是对n的分解,只是和上面分解n的方法不同。这类题给了许多组MD5加密,有一个特点就是他们的q是相同的(p不同)。
运用gcd求出q,然后p=n/q求得p,然后老套路。

题目描述(原题给了10组,我们只取前两组即可):
 

 

 
看题目的话和上面很像,都是给了很多组的RSA,但这个类型有一个特点,就是e很小且相同。
如果选取的加密指数较低,并且使用了相同的加密指数给一个接受者的群发送相同的信息,那么可以进行广播攻击得到明文。

 



 

 


题目: 密码:snl4





模反(方法见前)得d:
此时不能使用之前的方法解密,是解不出来的,还是需要用openssl,不过在这之前,需要用rsatool.py(在文章最前面,建议ctrl+F搜索)生成私钥。




 

这个我也是第一次接触,慢慢啃下来的,应该会写的很唠叨(可能还有错误),也算是自己的笔记吧。

题目: 密码:obbz
题目描述:flag.enc,pubkey.pem。1.不需要爆破。2.用你的数学知识解决此题。3.难道大家都不会开根号吗?


我们观察到e为2,提示用数学知识来解,所以应该是Rabin密码。
先写一下Rabin的加密方法:




若p是奇质数且p不能整除d,则:
1.d是模p的二次剩余当且仅当:dp?121(modp)
2.d是模p的非二次剩余当且仅当:dp?12?1(modp)
两遍同时乘上d,再开根号,得到:±cp+14c(modn)

然后根据中国剩余定理:




其中有一个为我们想要的明文m。

 
如果在RSA的使用中使用了相同的模n对相同的明文m进行了加密,那么就可以在不分解n的情况下还原出明文m的值。

题目: 密码:9fyr

首先分析加密脚本,先判断下是否够512-11位,不够的随机补全。
然后就是使用相同的N,不同的e,加密相同的数据。所以想到了共模攻击。





 
不好分类,只能这样写了。

题目描述:python文件
这里我做一个小小的改动,把gmpy2库改成gmpy,我的linux不知怎的就是装不上gmpy2,就拿gmpy将就一下,反正也能做题,如果有大佬知道怎么装请务必告诉我谢谢。
顺便说一下,我查资料的时候看到一种叫DSA的加密算法和他好像,虽然不知道这是不是DSA。

题中给了两组加密,说明只用一组来暴力跑肯定是不科学的。如果从r入手肯定是暴力了,所以我从s入手。
两组的s相减可以发现:





以下为完整的python解密代码:

 

 


这次的内容和块加密算法的块加密模式有关
这里是服务器端源代码。

 

 



观察程序源码可知,前面的16位(decode之后)是iv:


CBC是16位一组进行加密的,因此我们编写代码在改变iv的情况下把bdmin改成admin:


得到构造的token:




 


 

 
因为网上大多是 Web 应用中的已知密文的攻击,而这道题是已知明文的攻击。不过大同小异。





如果我们先随便选取一段密文,根据这种攻击的思想跑出相应的 IV,但是问题在于此时的明文不一定是我们想要的。我们知道 AES 解密后的中间值(即上图中的 Intermidiary Value)是不变的,对于同一段密文和 key 来说。假设我们之前跑出来的明文及 IV 分别为 m1、IV1,要求的明文及 IV 为 m2、IV2





也就是说我们用跑出来的 Intermidiary Value 和 想要的明文进行异或,就得得到符合要求的 IV,然后我们从最后一组 token 往前跑,因为这样就可以异或得到的 IV 作为前一组的密文




 
考块加密的基本知识以及结构。

 
加密代码(python):
用python写出解密函数:

 


 

 
rot类其实就是特殊的凯撒密码。特殊在它具有可逆性,可以自我解密。加密和解密的函数相同,比如rot13,13是因为有26个字母,一个字母+13再+13以后就是它本身。

ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。

ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。

ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母Z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码。

 




 
简单换位密码(Simple Substitution Cipher)加密方式是以每个明文字母被与之唯一对应且不同的字母替换的方式实现的。和埃特巴什码的区别在于他的替换码不再是Z→A,而是乱序的,比如: ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
解这种密码我们可以用字频分析的方法(当密文足够长时),或者我们可以利用网站:


扔进quipqiup中,解得明文:

 

 
希尔密码(Hill Cipher)是基于线性代数多重代换密码,由Lester S. Hill在1929年发明。每个字母转换成26进制数字:A=0, B=1, C=2…Z=25一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果 MOD 26。

 
古典密码编码方法归根结底主要有两种,即置换和代换。
把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密文。
代换密码则是将明文中的字符替代成其他字符。

 
凯撒密码是一种代换密码。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
如果有数字,则数字进行另外偏移量的偏移(可能与字母相同)。
例题:HCTF GAME 密码学教室入门(二)

你可以用工具来解,也可以用python来解,比如我选择python。


 
也是一种非常简单的以字母倒序排列作为特殊密钥的替换密码。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


0

举例:我们有明文ACT,明文对应矩阵:

我们的加密密钥为:GYBNQKURP,对应加密矩阵:

解密先求加密矩阵的逆矩阵,即解密矩阵:

例题:HCTF GAME 密码学教室进阶(六)

这题…手解嫌累,写代码我也不会写,只能找个在线解密:

是一种简单的替换密码。

应该都看得懂,不解释了。

栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文,这里以2栏栅栏加密为例。

例题:IDF 聪明的小羊

替换表(这是最常用的一套):

加密者需使用两种不同字体。准备好一篇包含相同AB字数的假信息后,即两种字体分别代表A型和B型。然后假信息中的每个字母按字体来决定其代表“A”还是“B”。

法兰西斯·培根另外准备了一种方法,其将大小写分别看作A与B。


aaencode可以将JS代码转换成常用的网络表情,也就是我们说的颜文字js加密。

 
解密方法就是在把代码后面的('_');去掉,然后在浏览器控制台上跑一下。

 


解法同上,把最后一个()去掉。

 


解法同上,把最后一个()去掉。

 
Brainfuck是一种极小化的计算机语言,按照”Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言,BrainF**k 语言只有八种符号,所有的操作都由这八种符号(> < + - . , [ ])的组合来完成。

 
不解释,直接扔进去就好了。

 

 
先说base16,其实就是hex,对,你没有看错。


 

0

0
0

解base64直接用python的base64模块就行,不会的用在线解密也可以,玩re的需要去看看base64的加密函数怎么写,逆向时可能会遇到。

0

一次性密码本(OTP)

题目描述:(题目源地址,看运气还能不能打开)

我们随便输入,发现每次加密的结果都不一样,猜测加密的key不可能无限长,所以输入了非常长的一串‘1’,试出来key的长度为128bytes。然后观察加密后网页的源码,可以发现下面有flag_enc:


我是一名资深的网络营销高手,从事网络营销有5年工作经验,经过百度公司,阿里巴巴公司系统的培训。

我要回帖

更多关于 丨amp是什么意思 的文章

 

随机推荐