凯撒加密的由来
凯撒加密正是凯撒大帝发明的,是一种古典的加密
凯撒率军征服高卢,袭击日耳曼和不列颠,古罗马开启了走出意大利,征服全欧洲的征程
仅用8年时间征服高卢后,凯撒率军越过卢比孔河,驱赶政敌,成为了罗马的独裁者
作为罗马帝国的奠基者,有人说他是罗马帝国第一位皇帝,而不是屋大维
凯撒加密是一种很实际应用中很容易破解的加密,是一种替换加密
加密方式
凯撒加密就是凯撒传递军事情报使用的加密方式
加密方式很简单,就是将每个字母用之后的第三个字母代替,没有之后第三个字母的X,Y,Z用A,B,C代替
后移三位是最经典的凯撒加密,也就是历史上凯撒大帝使用的加密方式
特殊的凯撒加密有不同的偏移量,不一定是3
python加密&解密
这种解密方式适用于知道偏移量的情况下进行解密
def encrypt_caesar(str,key=3): #加密函数
text=""
for i in str:
text+=chr(65+((ord(i)-65)+key)%26)
return text
def decrypt_caesar(str,key=3): #解密函数
text=""
for i in str:
text+=chr(65+((ord(i)-65)-key)%26)
return text
维吉尼亚密码
加密原理
它是16世纪的法国亨利三世王朝的维吉尼亚发明的,是从凯撒加密发展而来的
仔细观察这个密码字母表
每行被标记为了ABCDEFG......Z
而每行正是0到25偏移量的凯撒加密
维吉尼亚加密是有密钥的加密算法
密钥与明文,密文等长,就是密码字母表每行开头的标记ABCDEFG......Z,决定了对应位置的明文应该用哪一行密文进行加密
例子
明文:
HELLO
密钥:
GHRFD
加密后的结果:
第一个H按照密钥第一位(密码表第G行)加密,是N
第二个E按照密钥第二位(密码表第H行)加密,是L
第三个L按照密钥第三位(密码表第R行)加密,是C
第四个L按照密钥第四位(密码表第F行)加密,是O
第五个O按照密钥第五位(密码表第D行)加密,是R
NLCOR
其他替换密码的解密
替换密码有很多中不同的变种,我能可以提供线索,让计算机算法分析找到加密的规律,进行解密
这里提供一个解决自动替换密码求解的网站
https://quipqiup.com/
quipqiup是Edwin Olson的快速自动密码求解器。它可以解决报纸上常见的简单替换密码,包括密码(其中保留单词边界)和patristocrats(inwhi chwor dboun darie saren t)等难题。
根据一个buuctf上面的题目演示一下用法
题目给出了一个密文
MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
我们知道CTF竞赛的题目要将结果用flag{}包裹
flag{flag内容(解密后的字符串)}
说明MTHL解密之后对应的字符应该是flag
这就是线索,需要填到网站内
MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
MTHJ=flag
解出的第一个就是有实际意义的英语,就是明文
网站将单词间自动加了空格,提交时候需要去除
flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}