凯撒密码(Caesar)
-
加密对象: 大小写字母
- 原理:
- 是一种移位加密方法,给每个字母排个索引,字母a-z索引依次为0-25
- 偏移量是多少就向后面移动多少
- 如:密文"Abc",偏移量为3,加密后为"Def"。移位量即是密钥.
- 代码:
# write by 2021/6/26UPPER_DIC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" LOWER_DIC = "abcdefghijklmnopqrstuvwxyz"def encrypt_caesar(string, offset):ciphertext = ""for i in string:if i in UPPER_DIC:new_index = (UPPER_DIC.index(i) + offset) % 26ciphertext += UPPER_DIC[new_index]elif i in LOWER_DIC:new_index = (LOWER_DIC.index(i) + offset) % 26ciphertext += LOWER_DIC[new_index]else:ciphertext += ireturn ciphertextdef decrypt_caesar(string, offset):return encrypt_caesar(string=string, offset=26-offset)if __name__ == '__main__':ciphertext = encrypt_caesar("Caesar is good!", 3)plaintext = decrypt_caesar(ciphertext, 3)print(f"{plaintext}: {ciphertext}")