4.一般单表替代加解密

一般单表替代密码的原理是以26个英文字母集合上的一个置换π为密钥,对明文消息中的每个字母依次进行变换。
可描述为:明文空间M和密文空间C都是26个英文字母的集合,密钥空间K={π:Z26→Z26|π是置换},是所有可能置换的集合。
对任意π∈K,定义:
加密变换:eπ(m)=π(m)=c
解密变换:dπ© = π-1©=m, π-1是π的逆置换。

单表代替是密码学中最基础的一种加密方式。在加密时用一张自制字母表上的字母来代替明文上的字母(比如说A——Z,B——D)来达到加密。移位密码也属于单表代替,只不过比较有规律,相当于集体向前或向后。

4.一般单表替代加解密_第1张图片

# 字母表
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
# 替代表
REPLACE = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba'

# 加密
def encryption():
    message = input("input message:")
    password = ''
    for i in message:
        if i in LETTERS:
            num = LETTERS.find(i)
            password += REPLACE[num]
        else:
            password += i
    print("password:"+password)

#解密
def decryption():
    password = input("input password:")
    message = ''
    for j in password:
        if j in REPLACE:
            num = REPLACE.find(j)
            message += LETTERS[num]
        else:
            message += j
    print("message:"+message)

while True:
    print (u"1. encryption")
    print(u"2. decryption")
    choice = int(input("please input choice:"))
    if choice == 1: 
        encryption()
    elif choice == 2: 
        decryption()
    else: print (u"Your input is wrong!")


运行结果:
4.一般单表替代加解密_第2张图片

你可能感兴趣的:(#,密码学,#,Python,密码学,加密解密,python)