古典密码之“代换密码”

简述

代换密码是古典密码中的典型例子,采用单表代换的方式进行加密。

单表代换即在原始顺序的26个字母表的基础上,通过改变字母位置而生成无序的26字母表,该字母表就是本次加密的密钥。

比如在下表中,大写字母即初始字母表,其对应的小写字母,就是变换顺序后的字母表,也就是密钥。
在这里插入图片描述
因为代换密码的密钥是26个字母的排列组合,因此该加密算法的密钥空间为26!,与凯撒密码相比,如果对代换密码进行穷举搜索的方式进行攻击,计算量会相当大。

加解密

  • 加密过程

作为古典密码,代换密码的加密过程很简单,当给出本次加密的密钥时,只需要将明文字母用其对应的密钥字母进行替代,就完成了加密。

比如置换表如下:
在这里插入图片描述
当明文是“ENCRYPT”时,其对应的密文就是“tfeknhz”。

  • 解密过程

由于代换密码的加密实质是形成明文与密文的一一映射关系,因此解密过程和加密相同,其实就是将密文对照其加密所用的置换表,得出明文。

由上述置换表得出其逆置换表:
在这里插入图片描述
再将刚才的密文“tfeknhz”逐一查找,即得出明文“ENCRYPT”。

代码实现

  • 思路

使用代码实现主要分一下三个步骤:

1、生成随机置换表(即:初始字母表和随机的密钥字母表);

2、将输入的明文进行处理,使其在置换表中找出对应的密文字母;

3、将输入的密文进行处理,将密文反向代入置换表中找出对应的明文字母。

  • 代码
import random, re

initialForm = []    # 初始字母表
resultForm = []     # 置换字母表
letterList = 
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值