凯撒密码(Caesar)
-
加密对象: 大小写字母
- 原理:
- 是一种移位加密方法,给每个字母排个索引,字母a-z索引依次为0-25
- 偏移量是多少就向后面移动多少
- 如:密文"Abc",偏移量为3,加密后为"Def"。移位量即是密钥.
- 代码:
# write by 2021/6/26 UPPER_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) % 26 ciphertext += UPPER_DIC[new_index] elif i in LOWER_DIC: new_index = (LOWER_DIC.index(i) + offset) % 26 ciphertext += LOWER_DIC[new_index] else: ciphertext += i return ciphertext def 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}")