rot13
密码描述
替换式密码:(ROT13是凯撒密码加密演算法的特例)
套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13,ROT13函数是它自己的逆反:
对任何字元x:ROT13(ROT13(x))=ROT26(x)=x
A | B | C | D | E | F | G | H | I | J | K | L | M |
---|---|---|---|---|---|---|---|---|---|---|---|---|
| | | | | | | | | | | | | | | | | | | | | | | | | |
N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
基于python的解码器:
# author : 吉米
# creat time : 2023/1/19
# -*- coding: utf-8 -*-
def decoder(cipher):
crypt_list = list(cipher)
After_decryption = ""
num = 13
for ch in crypt_list:
ch = ord(ch)
if ord('a') <= ch <= ord('z'):
ch = ch + num
if ch > ord('z'):
ch -= 26
if ord('A') <= ch <= ord('Z'):
ch = ch + num
if ch > ord('Z'):
ch -= 26
a = chr(ch)
After_decryption += a
print('After_decryption:'+After_decryption)
if __name__ == '__main__':
ciphertext = input("ciphertext:")
decoder(ciphertext)
print("已解码!")
示例:
解码前:57R9S980RNOS49973S757PQO9S80Q36P
解码后:57E9F980EABF49973F757CDB9F80D36C