【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-变异凯撒
前言
在密码学中,凯撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
凯撒密码的由来可以追溯到古罗马时期,时任罗马军队统帅的恺撒(Julius Caesar)曾经使用这种密码来传递军事命令。
加密算法:
将明文中的每个字母按照预设的偏移量进行替换。如果偏移量为3,则A会被替换为D,B会被替换为E,以此类推。
解密算法:
将密文中的每个字母按照相反的偏移量进行替换。
简单案例:
假设我们使用偏移量为3的凯撒密码进行加密,明文为“HELLO WORLD”,则加密后的密文为“KHOOR ZRUOG”。
变异凯撒密码是一种对传统凯撒密码的改良,它在每个位置上使用的偏移量都是不同的,从而增加了密码的安全性。
简单案例:
假设我们使用变异凯撒密码进行加密,首先随机生成一个偏移量列表,例如[3,1,4,2,5],则明文“HELLO WORLD”的加密过程如下:
H通过偏移量3替换为K
E通过偏移量1替换为F
L通过偏移量4替换为P
L通过偏移量2替换为N
O通过偏移量5替换为T
W通过偏移量3替换为Z
O通过偏移量1替换为P
R通过偏移量4替换为V
L通过偏移量2替换为N
D通过偏移量5替换为I
因此,最终的加密密文为“KFPNTZPNVI”。解密的方法与传统凯撒密码类似,只需要知道偏移量列表即可。
ROT13是凯撒密码的一种变体,即移位数为13。ROT13是它自己本身的逆反,也就是说,要还原ROT13,应用加密同样的算法即可得,故同样的操作可用再加密与解密。
一、变异凯撒
1.打开题目
2.解题
编写一段python代码来检查其中的对应关系
str1 = "flag{"
str2 = "afZ_r"
for i in range(0,5):
a = ord(str1[i])-ord(str2[i])
print(a )
得到:5、6、7、8
因此,我们只需要编写一段python代码,通过ASCII码的运算,来得到flag
def b_kaisa(mstr):
j = 5
i = 0
lmstr = []
for i in range(len(mstr)):
m = ord(mstr[i]) # 将密文的第i个字母变为其ascii码值
m = m + j # ascii值+j
lmstr.append(m) # 将递进后的ascii值存入列表lmstr[]
i = i+1
j = j+1
return lmstr
if __name__ == '__main__':
m_str = 'afZ_r9VYfScOeO_UL^RWUc' # 密文
lstr = []
lstr = b_kaisa(m_str)
print (lstr)
将ASCII码放入转换器,得到
- 点赞
- 收藏
- 关注作者
评论(0)