【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-古典密码
前言
古典密码是指使用传统的替换或移位方式对明文进行加密,例如凯撒密码、栅栏密码等。在这种加密方式中,加密密钥通常是公开的,因此易被破解。现代密码学基本上已经放弃了古典密码的加密方式,而采用更加高级的数学算法来保证加密的安全性。
ASCII是一种字符编码标准,它规定了128个字符的编码,包括26个大写字母、26个小写字母、10个数字、标点符号和控制字符等。
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种用于将字符编码为数字的系统,它最初是为电传打字机而设计的。ASCII中的每个字符都用一个7位的二进制数字来表示,最高位始终为0。因此,ASCII最多可以编码128个字符。
ASCII的发展可以追溯到20世纪60年代,当时美国的计算机厂商需要一种统一的字符编码系统,以便不同的计算机可以互相通信并共享数据。最终,ASCII成为了美国国家标准协会(ANSI)的标准。
在计算机编程中,字符串是由一系列字符组成的序列。将字符串转换为ASCII码可以方便存储和传输,也可以进行比较和排序等操作。反之,将ASCII码转换为字符串可以将数字编码转换为可读的字符序列。
下面是一个Python的字符串和ASCII码转换的案例:
# 将字符串转换为ASCII码
string = "Hello, world!"
ascii_code = [ord(char) for char in string]
print(ascii_code)
# 将ASCII码转换为字符串
string_again = ''.join([chr(code) for code in ascii_code])
print(string_again)
运行结果为:
[72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33]
Hello, world!
在该案例中,使用了Python内置的ord
函数将字符串中每个字符转换为对应的ASCII码,并将结果存储在一个列表中。接着,使用join
方法将ASCII码列表中的数字编码转换为一个字符串。
栅栏密码是一种简单的加密方式,是将明文按照一定方式排列,然后按照规定的方式读取密文。具体方式为:将明文中的字符按照设定的间隔排列成一个矩形,然后按照行或列的顺序读取。
一、古典密码
1.打开题目
2.解题
密文内容如下{79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65}
密文全是数字,ASCII码转为字符串:
得到:OCU{CFTELXOUYDECTNGAHOHRNFIENM}IOTA
分组:
OCU{CFT
ELXOUYD
ECTNGAH
OHRNFIE
NM}IOTA
固定的格式为:格式:CTF{ }
利用key值的固定结构。一共35个字母,栅栏解密没有结果,考虑列置换。
调换列顺序。
得到flag:
- 点赞
- 收藏
- 关注作者
评论(0)