每周密码学WriteUP

弱智XOR

ref:Single-byte XOR cipher
额,其实这是一个脑残暴力题,加密方式类似凯撒,把某个字当关键字逐字XOR
直接开始绿皮暴力破解

1
2
3
4
5
6
7
8
string=input()  
for j in range(0,127):
print(str(i))
for i in range(0,len(string)-1,2):
char=eval("0x"+string[i:i+2])
buff=char^j
print(chr(buff),end='')
print('\n')

emmm,从结果里找个看的顺眼的(绿皮大法好

弱智XOR,升级版

ref:Single-byte XOR cipher
从一堆字符串里找到被单字符xor加密的那个
继续绿皮,利用python逐行处理。
加个判断,发现不可打印字符就丢弃,并过滤长度不足30的字串来减少过滤工作量

维吉尼亚密码

ref:Break repeating-key XOR
每日卡西斯基试验时间,由于密文够长,无需绿皮,直接按照密钥长度逐字符分析,做个统计。
由于不知道密钥长度,只好对密钥长度绿皮一下。
顺带一提,对于这种密码,密钥长度不够长的时候长度为质数最安全。(数学原因显然易见)

沙雕AES

ref:https://cryptopals.com/sets/1/challenges/8
这个题的有意思之处在于,它没让你找到原文是啥,只让你找到哪个文本串是加密的。
由搜索可知,本题采用的AES的ECB(电子密码本)有个重要缺陷,同样的原文块会被加密为同样的密文块(脑壳痛)。
本例中块的大小才16byte,直接大鼓式重复检查可得。
(题外话,现在aes128已经可以绿皮出来了)

古典密码学介绍-1-概论与替换式密码

什么是古典密码学

古典密码是密码学中的其中一个类型,其大部分加密方式都是利用替换式密码或移项式密码,有时则是两者的混合。

https://zh.m.wikipedia.org/wiki/古典密碼

简而言之,古典密码学处理的对象是字符(特别是拼音文字字符),而现代密码学则是更数学化的。
古典密码学有时候是和象棋,字谜,甚至语言学等分不开关系,这让它少一些严肃而多了一些浪漫。