【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-疑惑的汉字
前言
ROT13(回转13位)是一种简易的替换式密码算法。它是一种在英文网络论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。ROT13 也是过去在古罗马开发的凯撒密码的一种变体。ROT13是它自身的逆反,即:要还原成原文只要使用同一算法即可得,故同样的操作可用于加密与解密。该算法并没有提供真正密码学上的保全,故它不应该被用于需要保全的用途上。它常常被当作弱加密示例的典型。
应用ROT13到一段文字上仅仅只需要检查字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后串行反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里的字符受影响;数字、符号、空白字符以及所有其他字符都不变。替换后的字母大小写保持不变。
算法原理
原理上来说是对26个小写字母以及26个大写字母进行操作,对原有字母的ASCII值 + 13或者ASCII-13,然后找到计算后的ASCII值对应的字母。通过这样的规则将一个字母替换为另一个字母,从而达到加密的目的。
规则如下:
a-m 对应替换为 n-z
n-z 对应替换为 a- m
A-M 对应替换为 N-Z
N-Z 对应替换为A-M
其他字符:例如数字、空白字符以及其他字符均保持不变,并且替换后大小写不会改变(小写a替换后是小写n,而不是大写N)
密文 rot13在线解密
https://www.ctftools.com/down/
http://www.mxcz.net/tools/rot13.aspx
利用python编写的加解密脚本:
#coding:utf-8
import string
def decoder(crypt_str,shift):
crypt_list = list(crypt_str)
plain_str = ""
num = int(shift)
for ch in crypt_list:
ch = ord(ch)
if ord('a') <= ch and ch <= ord('z'):
ch = ch + num
if ch > ord('z'):
ch -= 26
if ord('A') <= ch and ch <= ord('Z'):
ch = ch +num
if ch > ord('Z'):
ch -= 26
a=chr(ch)
plain_str += a
print(plain_str)
crypt_str = raw_input("Crypto_text:")
print "!------decode------!"
shift=13
decoder(crypt_str,shift)
一、疑惑的汉字
1.打开题目
2.解题
在线网址推荐:
得到flag:
- 点赞
- 收藏
- 关注作者
评论(0)