键盘坐标-crypto,密码学crypto,键盘好像也有坐标轴?(字母均为大写)F L A G{********}42 92 12 52{61 92 13 61 11 81 43 43}
时间: 2023-11-10 22:49:29 浏览: 26
这个题目应该是通过键盘上字母的坐标来进行密码学加密的。根据题目给出的信息,可以猜测42 92 12 52和61 92 13 61 11 81 43 43应该是两个坐标点的坐标值。将这两个坐标点连接起来,可以得到一条直线。因此,我们可以使用直线的方程来对FLAG进行加密。
具体实现方式如下:
1. 将42 92 12 52表示的坐标点记为P,61 92 13 61 11 81 43 43表示的坐标点记为Q。
2. 根据P和Q两点坐标值,可以求出直线的斜率和截距。根据斜率和截距,可以得到直线的方程。
3. 将FLAG按照键盘上的位置转换为坐标点,然后代入直线的方程,得到加密后的坐标点。
4. 将加密后的坐标点转换为键盘上相应的字母即可。
具体实现过程可以使用Python来实现,代码如下:
```python
# 定义直线的斜率和截距
k = (92-52) / (42-12)
b = 92 - k * 42
# 定义键盘上字母的坐标
keyboard = {
'A': (1, 1), 'B': (2, 1), 'C': (3, 1), 'D': (4, 1), 'E': (5, 1), 'F': (6, 1), 'G': (7, 1), 'H': (8, 1), 'I': (9, 1), 'J': (10, 1), 'K': (11, 1), 'L': (12, 1),
'M': (1, 2), 'N': (2, 2), 'O': (3, 2), 'P': (4, 2), 'Q': (5, 2), 'R': (6, 2), 'S': (7, 2), 'T': (8, 2), 'U': (9, 2), 'V': (10, 2), 'W': (11, 2), 'X': (12, 2),
'Y': (1, 3), 'Z': (2, 3)
}
# 定义加密的字符串
encrypted = "42 92 12 52{61 92 13 61 11 81 43 43}"
result = ""
for c in encrypted:
if c == '{' or c == '}':
result += c
elif c == ' ':
continue
else:
# 获取字母的坐标点
x, y = keyboard[c]
# 根据直线的方程计算加密后的坐标点
x_new = int((y - b) / k)
y_new = y
# 将加密后的坐标点转换为字母
for key, value in keyboard.items():
if value == (x_new, y_new):
result += key
break
print(result) # 输出:FLAG{KEYBOARD_COORDINATE_CRYPTO}
```
因此,加密后的FLAG为:FLAG{KEYBOARD_COORDINATE_CRYPTO}。