4.一般单表替代加解密

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

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

在这里插入图片描述

# 字母表
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!")


运行结果:
在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值