密码学相关(CRYPTO)
CRYPTO 是密码学的缩写,这一类的题目通常以破解密文为主,加密算法有可能是古典加密算法,也有可能是现代的加密算法,甚至有些是出题者杜撰的加密算法。
大帝的秘密武器
- 分值:100
- 附件:55ed7caf2936e.txt
公元前一百年,在罗马处上了一位对世界影响巨大的人物,他是当时罗马三巨头之一。在执政生涯中,传言他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。以下密文被解开后可以获得一个有意义的单词,你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交:FRPHEVGL。答案为非常规形式。
接触过密码学从前面两句话应该猜到是“凯撒密码”了(从第二题凯撒大帝也能得到提示),加密方式是位移,这就好办了,a-z首尾相连进行替换,那么就有26种位移方法,用python循环一下:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def translateMessage(key, message, mode):
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
translated = ''
for symbol in message:
if symbol.upper() in LETTERS:
num = LETTERS.find(symbol.upper())
if mode == 'encrypt':
num = num + key
elif mode == 'decrypt':
num = num - key
if num >= len(LETTERS):
num = num - len(LETTERS)
elif num < 0:
num = num + len(LETTERS)
if symbol.isupper():
translated = translated + LETTERS[num]
elif symbol.islower():
translated = translated + LETTERS[num].lower()
else:
translated = translated + symbol