第二章:简单古典密码(及其五元组)

2023-10-26

简单古典密码及其五元组


编制密码的基本原理和基本方法称为密码法。基本的密码法主要有移位(也称为置换),代替,和加减三种(在许多书上只是介绍置换和代替)。在密码发展的初级阶段,他们都曾经独立地作为加密算法对明文信息进行加密。

移位密码

移位密码是按照某种规则对明文字符位置进行某种修改,不改变明文字符的原型,有时也称为易位密码、置换密码、换位密码等。
比如:
明文:明晨五时发起总攻

明文字符位置 1 2 3 4 5 6 7 8
明文字符

移位规则如下表:

密文字符位置 1 2 3 4 5 6 7 8
明文字符位置 5 4 6 8 7 3 2 1

移位规则的含义是:第一个密文字符是第五个明文字符、第二个密文字符是第四个明文字符、第三个密文字符是第六个明文字符…得到移位之后的密文为:

密文字符位置 1 2 3 4 5 6 7 8
密文字符
接收方可按照移位规则表逆推出明文。 显然,移位密码的有点十分明显,即:明文字符的位置发生了变化,使明文之间的结构规律得到了破坏。但是缺点也十分明显:移位只是改变了明文之间的位置没有改变明文的形态,将造成移位密码信息的泄露。一个密文字符的出现次数也是改字符在明文中的出现次数。

移位密码的五元组(以26个英文字母为例)

明文空间:26个字母
密文空间:26个字母
加密算法:c=(m+k)mod 26(m表示明文,k表示密文)
解密算法:m=(c-k)mod 26
密钥k为0到25,密钥空间大小为26

代替密码

代替密码是利用预先设计的代替规则,对明文逐字符或逐字符组进行代替的密码。其中一个字符组称为一个代替单位,代替规则也称为代替函数、代替表或s盒(注意s盒的概念)。

1. 单表代替
在单表代替中,始终使用一个代替表,即代替表是固定的。比如说汉字与区位码的对应关系,每一个汉字由他唯一对应的区位码,且此区位码不会发生改变,比如“晨”的区位码是1931、“五”的区位码是4669。
例如:
在对明文“晨五点总攻”进行加密时使用区位码进行加密:明文的区位码如下:

明文字符
明文区位码 1931 4669 2167 5560 1505
一个加密用的代替表为:
明文数字 0 1 2 3 4 5 6 7 8 9
密文数字 5 4 8 2 1 0 9 7 3 6
明文字符0替换成密文字符5等,1换成4。

根据代替表将数字逐个进行变换得到:

密文区位码 4624 1996 8497 0095 4050
密文字符 �� �

凯撒密码(简单的单表代替密码)

(也有的书上说凯撒密码是移位密码)
凯撒密码实则就是字母对应关系往后移3位,比如明文为a,得到的密文就为d;明文为b,得到的密文就为e,等等。
则存在:

c=(m+3)mod 26
m=(c-3)mod 26

0对应字母a,1对应字母b,2对应字母c,3对应字母d,依次类推到26个英文字母。
例如:明文为:hello world
对应的密文为:khoor zruog

2. 多表代替密码
单表代替只要知道了代替表就很容易被破解,因为他的代替表是唯一不变的,引入多表代替的概念。在多表代替密码中,代替表的使用由密钥来指示(引入了密钥的概念)。
例如:
设加密变换为c=(m+k)mod10,但k不是固定的常数而是密钥,则利用密钥序列:4321 5378 4322 3109 1107对明文“晨五点总攻”的加密过程为:

明文
明文序列m 1931 4669 2167 5560 1505
密钥序列k 4321 5378 4322 3109 1107
密文序列c 5252 9937 6489 8669 2602
第一个字“晨”的区位码为1931,通过公式c=(m+k)mod10为:
(1+4)mod10=5,所以数字1对应的密文为5

又比如:

(9+3)mod10=2,所以数字9对应的密文为2

因为密钥的存在,使得每一次明文的加密大概率不会得到相同的密文,抵御了一部分攻击。

代替密码的五元组(以26个英文字母为例)

明文空间:26个字母
密文空间:26个字母
加密算法和解密算法:通过查询明文--密文的代替表实现
密钥空间大小:26!

仿射密码(以26个字母为例)

仿射密码的加密函数为c=(k1m+k2)mod n
在移位密码的基础上多加了一个k1,仿射密码也就是存在K1与K2,K1与n互素,gcd(K1,n)=1。(以n=26为例),则K1的取值有3、5、7,9、11、13、15、17、19、21、23、25(一共12种可能)。K2的取值为0-25(一共26种可能),当K1与K2的取值不同时,得到的加密解密也不相同。

仿射密码五元组(以26个字母为例)

明文空间:26个字母
密文空间:26个字母
加密算法:c=(k1m+k2)mod 26(k1要与26互素)
解密算法:m=k-1(c-k2)mod 26(k-1为k mod 26 的逆元)
密钥空间:(k1,k2)
密钥空间大小为k1 × \times ×k2=12*26=312

维几利亚密码

历史上最著名的维几利亚密码体制也就是明文空间和密文空间均改为英文字母的序号集合;

加密过程:c=( m i m{i} mi+ k i k{i} ki)mod 26
解密过程:m=( c i c{i} ci- k i k{i} ki)mod 26

其中i是一个下标,表示1<=i<=t(t表示密钥的位数)

维几利亚密码及其五元组(以26个字母为例)

明文空间:26个字母
密文空间:26个字母
加密算法:c=( m i m{i} mi+ k i k{i} ki)mod 26
解密算法:m=( c i c{i} ci- k i k{i} ki)mod 26
密钥空间: k i k{i} ki(1<=i<=t)
密钥空间大小:26t

博福特密码及其五元组

将维几利亚的加法变成减法就成为了博福特密码。
明文空间:26个字母
密文空间:26个字母
加密算法:c=( k i k{i} ki- m i m{i} mi)mod 26
解密算法:m=( k i k{i} ki- c i c{i} ci)mod 26
密钥空间和密钥空间大小同维几利亚密码
可以看出,博福特的加密算法和解密算法相同,这是其的一个优点。

一次一密及其五元组(以二进制0 1为例)

一次一密的原则是密钥是随机生成的,使敌手不能猜测出下一个明文的变化规则。
明文空间:0或者1
密文空间:0或者1
加密算法:m与k的异或
解密算法:c与k的异或
密钥空间:0或者1
密钥空间大小为2n

有什么问题的欢迎评论区讨论

小声逼逼:太难总结了!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二章:简单古典密码(及其五元组) 的相关文章

  • 双系统安装win7出现grub怎么解决

    我们在重装系统时 特别苹果装双系统时 会出现安装过程或者安装后的问题 发现系统开机显示grub 导致不能正常进入系统 让人很是着急 其实出现这种情况是因为系统找不到主引记录所导致 只要重建主引记录mbr即可解决 下面小编就教教大家win7系
  • 【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么挖洞致富的?

    19岁 很多人正是上大学 仍伸手向父母要生活费的年纪 可有一位 00 后阿根廷少年 Santiago Lopez 靠自学成才 赚取了 100 万美元 折合人民币约 670 万元 的 Bug 赏金 成为世界上第一个白帽黑客的百万富翁 美元 少
  • TeslaMate特斯拉神器本地Docker部署实现无公网远程访问

    文章目录 1 Docker部署TeslaMate 2 本地访问TeslaMate 3 Linux安装Cpolar 4 配置TeslaMate公网地址 5 远程访问TeslaMate 6 固定TeslaMate公网地址
  • 数据采集才是MES系统的核心内容

    一 数据采集在MES管理系统中的应用 1 设备数据采集 MES管理系统通过与生产设备的连接 可以实时采集设备运行状态 产量 质量等相关数据 这有助于企业及时掌握设备运行状况 优化设备资源配置 提高设备利用率 2 工艺数据采集 MES管理系统
  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • SpiderFlow爬虫平台 前台RCE漏洞复现(CVE-2024-0195)

    0x01 产品简介 SpiderFlow是新一代爬虫平台 以图形化方式定义爬虫流程 以流程图的方式定义爬虫 不写代码即可完成爬虫 是一个高度灵活可配置的爬虫平台 0x02 漏洞概述 SpiderFlow爬虫平台src main java o
  • Jenkins流水线怎么做?

    问CHAT Jenkins流水线怎么做 CHAT回复 Jenkins流水线是一种创建 测试和部署应用程序的方法 以下是为Jenkins创建流水线的步骤 1 安装Jenkins 首先你需要在你的服务器上安装Jenkins 这个过程可能会根据你
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • Jenkins 插件下载速度慢、安装失败了!我教你怎么解决!

    Jenkins部署完毕 如果不安装插件的话 那它就是一个光杆司令 啥事也做不了 所以首先要登陆管理员账号然后点击系统管理再点击右边的插件管理安装CI CD必要插件 但是问题来了 jenkins下载插件速度非常慢 而且经常提示下载插件失败 真
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • ssh:connect to host github.com port 22: Connection timed out

    解决流程 1 将github的端口由22改为443 ssh T p 443 git ssh github com 2 接着输入yes进行确认 The authenticity of host ssh github com 443 192 1
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 【无标题】

    大家都知道该赛项的规程和样题向来都是模棱两可 从来不说具体的内容 导致选手在备赛时没有头绪 不知道该怎么训练 到了赛时发现题目和备赛的时候完全不一样 那么本文将以往年信息安全管理与评估赛项经验来解读今年2023年国赛的规程 帮助选手们指明方
  • 【安全】原型链污染 - Hackit2018

    目录 准备工作 解题 代码审计 Payload 准备工作 将这道题所需依赖模块都安装好后 运行一下 然后可以试着访问一下 报错是因为里面没内容而已 不影响 准备工作就做好了 解题 代码审计 const express require exp
  • 【方法】如何把Excel“只读方式”变成可直接编辑?

    Excel在 只读方式 下 编辑后是无法直接保存原文件的 那如何可以直接编辑原文件呢 下面来一起看看看吧 如果Excel设置的是无密码的 只读方式 那在打开Excel后 会出现对话框 提示 是否以只读方式打开 如果想直接编辑文件 选择 否
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • 保存图片到MySQL&从MySQL读取图片

    接上次 爬取坤坤表情包 这次我们直接将表情包存到MySQL数据库而不是本地 1 创建数据库 首先创建一个数据库 数据库名为ikun 表名为img 3个字段分别为id 图片id img 二进制码 date 存储时间 其中 二进制码的存储格式应
  • 【NATS streaming】NATS streaming 简介与安装

    1 概述 市面上常见到的和Nats功能类似的消息通信系统有 ActiveMQ KafKa RabbitMq Nats 之前是Ruby编写现已修改为Go Redis C语言编写 Kestrel Scala编写不常用 NSQ Go语言编写 这些
  • 记录自用的CAN开发调试工具和上位机

    文章目录 前言 二 CANable开源软硬件 三 AMP32F103 方案的自制USB2CAN 调试器 四 TTCAN USB2CANFD调试器 二 PyQT开发CAN调试器上位机 1 CAN通信速率可设 CAN CANFD可选 2 CAN
  • 网站建设如何快速建站_网站建设快速建站有哪些方法

    网站建设快速建站方法 1 JavaScript 压缩和模块打包 JavaScript 应用是以源码形式进行分发的 而源码解析的效率是要比字节码低的 对于一小段脚本来说 区别可以忽略不计 但是对于更大型的应用 脚本的大小会对应用启动时间有着负
  • 下载频道2013上半年超人气精华资源汇总---全都是免积分下载。

    http bbs csdn net topics 390526352 下载频道2013上半年超人气精华资源汇总 全都是免积分下载 十分感谢这些免积分分享精华资源的好人 Net 1 C 入门到精通加强版 2 C 类库查询手册 Android
  • 昆仑通泰历史数据导出到u盘_MCGS配方组导出到U盘案例-专业自动化论坛-中国工控网论坛...

    说实话 第一次玩昆仑通态的屏 客户要求的功能又很复杂 真是翔都出来了 为了各位同行的福祉 开始慢慢写一些实际应用上的东西 希望大家少走歧路 如果觉得有用就点个赞 觉得小儿科就 切 一声离开就好 ok 配方组导出到U盘的脚本如下 返回值10
  • 通过示例理解数据库相关概念(一、关系,元组,域,键,笛卡儿积等等)

    出发点 数据中的各种定义实在看不下去 太离散数学了 只有直接看例子了 少牺牲点脑细胞 但是 没有了严谨的定义 很多东西就只可意味不可言传了 通过例子可以用来理解数据库的离散数学式的定义 例子 Stu表 学号 姓名 性别 班级 201901
  • 腾讯云网站备案流程(2023新版教程)

    腾讯云网站备案流程先填写基础信息 主体信息和网站信息 然后提交备案后等待腾讯云初审 初审通过后进行短信核验 最后等待各省管局审核 前面腾讯云初审时间1到2天左右 最长时间是等待管局审核时间 网站备案地区不同管局审核时间也不同 快的3天即可通
  • 条件编译#ifdef用法

    这几个宏是为了进行条件编译 一般情况下 源程序中所有的行都参加编译 但是有时希望对其中一部分内容只在满足一定条件才进行编译 也就是对一部 分内容指定编译的条件 这就是 条件编译 有时 希望当满足某条件时对一组语句进行编译 而当条件不满足时则
  • 最大连续和(单调队列)

    最大连续和 题目描述 给你一个长度为n的整数序列 A1 A2 An 要求从中找出一段连续的长度不超过m的子序列 使得这个序列的和最大 输入描述 第一行为两个整数n m 第二行为n个用空格分开的整数序列 每个数的绝对值都小于1000 输出描述
  • 向大侠们求救!!! 想要显示jsp页面时出现HTTP Status 500 - An exception occurred processing JSP page

    错误描述 HTTP Status 500 An exception occurred processing JSP page main jsp at line 23 type Exception report message An exce
  • java.lang.OutOfMemoryError: GC overhead limit exceeded原因及解决

    https www cnblogs com penghongwei p 3603326 html https blog csdn net renfufei article details 77585294 https www jb51 ne
  • linux查看 rsync 服务状态,如何启动rsync服务

    linux查看 rsync 服务状态 如何启动rsync服务 root localhost lsof i tcp 873 开启状态 未开启状态 启动rsync服务命令 root localhost rsync daemon config e
  • windows 10 内存居高不下,实际没开多少进程

    windows 10 内存居高不下 实际没开多少进程 关闭快速启动 就好了
  • 多进程及多线程的区别

    一 两者区别 多进程和多线程的主要区别是 线程是进程的子集 部分 一个进程可能由多个线程组成 多进程的数据是分开的 共享复杂 需要用IPC 但同步简单 多线程共享进程数据 共享简单 但同步复杂 1 多进程 进程是程序在计算机上的一次执行活动
  • Java-单链表相关总结

    链表基类 author Q sir date 2021 06 08 desc 仅限本类操作 有些方法未加兼容及拓展 class Node Node next int data public Node int data this data d
  • 【满分】【华为OD机试真题2023 JAVA&JS】简单的自动曝光

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 简单的自动曝光 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 一个图像有n个像素点 存储在一个长度为n的数组img里 每个像素点的取值范围 0 255 的正整数
  • Locust性能测试-分布式执行的方法(ok)

    来源 https www cnblogs com yoyoketang p 11681370 html https www cnblogs com kaibindirver p 11773334 html 前言 使用Locust进行性能测试
  • 腾讯云服务器被DDOS攻击解决办法

    腾讯云是国内仅此次阿里云的云服务商 很多站长朋友都使用他们家云服务器 自然被DDOS攻击的也不少 今天来介绍下使用腾讯云服务器被DDOS攻击的解决办法 一 购买腾讯高防IP 也称腾讯大禹BGP高防IP 是一个运行在腾讯云内网的高防IP服务
  • 第二章:简单古典密码(及其五元组)

    简单古典密码及其五元组 编制密码的基本原理和基本方法称为密码法 基本的密码法主要有移位 也称为置换 代替 和加减三种 在许多书上只是介绍置换和代替 在密码发展的初级阶段 他们都曾经独立地作为加密算法对明文信息进行加密 移位密码 移位密码是按