常见古典密码介绍

news2025/2/5 22:03:46

文章目录

        • Vigenère 密码
        • 变异凯撒
        • 摩斯密码
        • 栅栏密码
          • 加密方式一
          • 加密方式二
        • Caesar和ROT13的区别
        • ROT13
          • 加密原理
          • ROT13查找表

Vigenère 密码

由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于1586年提出一种多表替换密码,
  即维吉尼亚密码,也称维热纳尔密码。维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。

加密算法:例如密钥的字母为[d],明文对应的字母[b]。根据字母表的顺序[d]=4,[b]=2,那么密文就是[d]+[b]-1=4+2-1=5=[e],
  因此加密的结果为[e]。解密即做此逆运算。

加密公式:密文 = (明文 + 密钥) Mod 26 - 1
  解密公式:明文 = [26 + (密文 - 密钥)] Mod 26 + 1

也可以用查表法来进行加密:例如密钥的字母为[d],明文对应的字母[b],在下图的表格第一行找到字母"d"(深蓝色),
  再在左边第一列找到字母"b"(绿色),两个字母的交叉点(b行d列)就是字母"E",所以对应的密文字母为[e]。
在这里插入图片描述

假如对如下明文加密:

to be or not to be that is the question

当选定“have”作为密钥时,加密过程是:密钥第一个字母为[h],明文第一个为[t],因此可以找到在h行t列中的字母[a],依此类推,
  得出对应关系如下:

密钥:ha ve ha veh av eh aveh av eha vehaveha
  明文:to be or not to be that is the question
  密文:ao wi vr isa tj fl tcea in xoe lylsomvn

变异凯撒
data = 'afZ_r9VYfScOeO_UL^RWUc'
flag = ''
incre = 5
for i in data:
    flag += chr(ord(i) + incre)
    incre += 1

print(flag)
摩斯密码

字母

字符电码符号字符电码符号字符电码符号字符电码符号
A.━B━ ...C━ .━ .D━ ..
EF..━ .G━ ━ .H....
I..J.━ ━ ━K━ .━L.━ ..
M━ ━N━ .O━ ━ ━P.━ ━ .
Q━ ━ .━R.━ .S...T
U..━V...━W.━ ━X━ ..━
Y━ .━ ━Z━ ━ ..

数字

字符电码符号字符电码符号字符电码符号字符电码符号
0━ ━ ━ ━ ━1.━ ━ ━ ━2..━ ━ ━3...━ ━
4....━5.....6━ ....7━ ━ ...
8━ ━ ━ ..9━ ━ ━ ━ .

标点符号

字符电码符号字符电码符号字符电码符号字符电码符号
..━ .━ .━:━ ━ ━ ...,━ ━ ..━ ━;━ .━ .━ .
?..━ ━ ..=━ ...━.━ ━ ━ ━ ./━ ..━ .
!━ .━ .━ ━━ ....━_..━ ━ .━".━ ..━ .
(━ .━ ━ .)━ .━ ━ .━$...━ ..━&. ...
@.━ ━ .━ .

非英语字符

字符电码符号字符电码符号字符电码符号字符电码符号
à或å.━ ━ .━ä或æ.━ .━ch━ ━ ━ ━ç或ĉ━ .━ ..
ð..━ ━ .é..━ ..è.━ ..━ĝ━ ━ .━ .
ĥ━ .━ ━ .ĵ.━ ━ ━ .ñ━ ━ .━ ━ö或ø━ ━ ━ .
ŝ...━ .þ.━ ━ ..ü或ŭ..━ ━

特殊符号

字符电码符号字符电码符号字符电码符号字符电码符号
AR.━ .━ .AS.━ ...K━ .━SK...━ .━
BT━ ...━
栅栏密码

栅栏密码有两种加密方式,一种是对明文进行加密,一种是使用密钥进行加密

加密方式一

按对角线的顺序写出明文,再以行的顺序读出作为密文

比如

在这里插入图片描述

加密方式二

利用密钥给列的顺序进行排列,解密的时候就用密钥进行逆序推出

比如

在这里插入图片描述

只要找到密钥,再对密文进行枚举栏数还原就可以拿到明文

Caesar和ROT13的区别

ROT13(Rotate by 13 Places)加密和凯撒(Caesar)加密都是简单的替换密码,它们之间有以下区别:

  1. 字符替换规则:
    • ROT13:ROT13加密是一种单字母替换密码,将字母表中的每个字母替换为字母表中顺序往后数第13个字母。例如,A替换为N,B替换为O,依此类推。
    • 凯撒加密:凯撒加密也是一种单字母替换密码,但是替换规则可以是任意的固定偏移量。通常,凯撒加密采用的偏移量是3,即字母表中的每个字母替换为字母表中往后数第3个字母。
  2. 加密和解密的一致性:
    • ROT13:ROT13加密是一种对称加密算法,加密和解密使用相同的过程。对已加密的文本再次应用ROT13算法即可还原为原始文本。
    • 凯撒加密:凯撒加密也是一种对称加密算法,加密和解密使用相同的偏移量。对已加密的文本应用相同的偏移量并反向操作即可还原为原始文本。
  3. 加密范围:
    • ROT13:ROT13仅适用于字母,对于其他字符(如数字、符号等)保持不变。
    • 凯撒加密:凯撒加密可适用于任何字符,包括字母、数字和符号。

总体而言,ROT13和凯撒加密都是基于简单的字母替换原理的加密算法,主要区别在于替换规则和加密范围。ROT13加密是一种特殊的凯撒加密,其替换规则固定为往后数第13个字母。凯撒加密可以采用不同的偏移量,通常为3。

ROT13
加密原理

套用到ROT13的一段文字只需要检查字母顺序并取代它在13位之后的对应字母,如果超过了就绕回26字母的开头即可。A换成N,B换成N,然后序列反转:N换成A,O换成B。这些只有在英文字母中才有有效;数字、符号、空白以及其他所有字符都不变。大写字母转大写字母,小写字母转小写字母

对于任何字符x

在这里插入图片描述

ROT13查找表

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是局域网管理软件?这款局域网管理软件简直太好用了丨好物分享

在信息技术日新月异的今天,企业的内部网络管理如同古代战场上的排兵布阵,需有精良之器以应对复杂多变的局势。 局域网,作为企业内部信息交流与资源共享的重要平台,其管理效率与安全性直接影响到企业的运营与发展。 一、局域网管理…

Docker-安装软件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装MySQL(一)拉取MySQL镜像(二)运行MySQL容器(1)数据卷概念 (三&#x…

开发 LLM 支持的应用程序:Azure 上的 Llama 2(5/n)

微软与 Meta 联手在 Azure 上提供 Meta 的开源大型语言模型 (LLM) Llama 2,打开了闸门!信不信由你,这是一件大事。 亚马逊的 AWS 于去年年底发布了 Amazon SageMaker Jumpstart,它与 Azure 类似,支持部署开源模型供公共…

常见而不容忽视,电器中微型紧固件的四大影响

技术和创新催生了数以百万计的电器,它们已成为每个家庭和人类日常使用的一部分。从微波炉和冰箱到笔记本电脑和智能手机,这些部件的技术影响正在迅速增长,成为现代生活的一部分。 在许多人的不经意间,这些功能强大的发明为我们许多…

[Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全

互斥量 mutex • 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间 内,这种情况,变量归属单个线程,其他线程无法获得这种变量。 • 但有时候,很多变量都需要在线程间共享,这…

代码随想录算法训练营第二十一天(二叉树 八)

今天是二叉树复习最后一天! 力扣题部分: 669. 修剪二叉搜索树 题目链接:. - 力扣(LeetCode) 题面: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low…

使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B

接下来的几篇相关的文章,聊聊使用 Dify 和 AI 大模型理解视频内容。 本篇作为第一篇内容,以昨天出圈的“黑神话悟空制作人采访视频”为例,先来聊聊经常被国外厂商拿来对比的国产模型:千问系列,以及它的内测版。 写在…

Linux非VP扩容方案

Linux系统非VP扩容方案 描述:现有虚拟机磁盘1TB 容量不够,需要扩容。 采用:https://bbs.sangfor.com.cn/forum.php?modviewthread&tid110403 扩容失败。原因是没有VP 和LV 解决方案: 1,查看分区 cat /proc/p…

鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多,比如中断控制器,中断源,中断向量,中断共享,中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.本篇的主角是海公公,用…

全国计算机二级C语言笔试试题及答案

一、选择题(每小题2分,共70分)   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。   (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 …

day06-SpringBootWeb请求响应

前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们的…

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…

Bonree ONE 3.0:全域可观测 运维新境界

2024年8月16日,备受瞩目的Bonree ONE 3.0产品发布会上海站在上海中心大厦隆重举行。此次发布会以”Take IT Easy“——全域可观测,运维新境界为主题,博睿数据正式发布了一体化智能可观测平台Bonree ONE 3.0版本。Bonree ONE 3.0凭借领先的全域…

超声波清洗机哪个品牌好用?值得入手的超声波清洗机品牌推荐

许多人初次使用超声波清洗机的场景,往往发生在眼镜店内。它能灵巧穿梭于眼镜鼻托等细微缝隙间,实现彻底清洁,成效显著。这不仅限于眼镜,各式小件物品同样能享受到这份深度洁净的待遇。尽管超声波清洗机或许并非日常生活中的绝对必…

LeetCode.80.删除有序数组中的重复项II

题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间…

【MySQL-23】万字总结<InnoDB引擎>——【逻辑存储结果&架构(内存结构,磁盘结构,后台线程)&事务原理&MVCC】

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

【nginx】详细详细超详细,包括编译安装nginx+升级+回滚+核心配置+高级配置+反向代理+Nginx Rewrite相关功能等等

理论部分: 企业高性能Web服务器Nginx是一个开源的、高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3/SMTP协议。它由俄罗斯人Igor Sysoev开发,并在2004年以BSD-like协议发布。Nginx因其卓越的性能、稳定性、丰富的功能集以及简单的配置而…

连锁美业门店收银系统怎么选?什么样的美业系统好用?美业管理系统源码分享

通过“PCiPAD手机APP微信小程序”的便捷功能操作, 提升预约服务、 会员管理、 收银管理、 库存管理、 客勤维护、员工管理、 排班管理等流程效率, 让门店员工的工作重心回归到服务质量上。 ▲ 小程序 ▲ 手机APP ▲ PC管理后台

Aseembly(九)-[BX] Loop

正如本篇文章的标题所示:本篇文章主要是进行 [BX] 和loop的讲解 上篇文章我们讲述了 关于 自己去dosbox里面编写汇编程序并且一步一步的编译(masm) 链接(link) 然后进行debug的过程 ,也进行了一个关于栈的实验: 详情请见我的上一篇文章 Aseembly(八)-汇编语言编写程序 让我们…

JavaScript class和正则

正则表达式练习 出生日期 年 月 日 ()表示一个整体 console.log(1909.match(^19\\d{2}$)); console.log(2024.match(^20(([01][0-9])|(2[0-4]))$)); //年 console.log(1909.match(^(19\\d{2})|(20(([01][0-9])|(2[0-4])))$)); // 月 console.log(12.match(^(0[1-9])|(1[0-2])…