移位加密

移位加密

最简单的加密方式之一,通过每一个字母映射至这个字母之后与之相隔一定数量个字母的字母来实现加密。
P = C = K = Z 26 P=C=K=\textbf{Z}_{26} P=C=K=Z26 0 ≤ K ≤ 25 0\le K\le 25 0K25任意 x , y ∈ Z 26 x,y\in \textbf{Z}_{26} x,yZ26定义 e K ( x ) = ( x + K ) m o d    26 e_K(x)=(x+K)\mod 26 eK(x)=(x+K)mod26、定义 d K ( y ) = ( y − K ) m o d    26 d_K(y)=(y-K)\mod 26 dK(y)=(yK)mod26。对任意的 x ∈ Z 26 x\in \textbf{Z}_{26} xZ26 d K ( e K ( x ) ) = x d_K(e_K(x))=x dK(eK(x))=x

代码

python3
输入待加密字符串敲回车即可看到加密和解密结果。待加密字符串不区分大小写。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
START = ord('a')
CHAR_COUNT = 26
OFFSET = 11
MAP = {
    
    chr(v+START): chr(((v+OFFSET) % CHAR_COUNT)+START) for v in range(CHAR_COUNT)}
def encrypt(str):  # 加密
    return ''.join([MAP[char] if char in MAP else char for char in str.lower()])
def decrypt(str):  # 解密
    return ''.join([list(MAP.keys())[list(MAP.values()).index(char)] if char in MAP.values() else char for char in str.lower()])
v = input()
print('\033[31m', 'encrypt: ', encrypt(v), '\033[0m', '\033[35m', '\t decrypt: ', decrypt(encrypt(v)), '\033[0m')

猜你喜欢

转载自blog.csdn.net/dscn15848078969/article/details/114679925