密码学-古典密码

news/2024/12/19 17:23:15/文章来源:https://www.cnblogs.com/youngbo-24/p/18617645

密码学-古典密码

前言

古典密码学(Classic cryptography)现代密码学(Modern cryptography)的主要差别在于计算机的使用,一般来说,古典密码学是基于字符的,而现代密码学是基于二进制位的。

代换

代换密码是将明文中的字符替代成其他字符,即替代转换,若整个加密过程中每个字符采用同一张表替代,则为单表代换密码,类似的,若整个加密过程中每个字符采用不同的表替代,则为多表代换密码,典型的单表代换密码有凯撒密码、培根密码等,多表代换密码有维吉尼亚密码等。

置换

置换密码(Transposition Cipher)是一种通过改变明文中字符的顺序,而不是替换字符内容来进行加密的密码方法。置换密码的基本特点是加密过程中没有字母的替换,所有的字符都保留原样,只是它们的顺序发生了变化。因此,置换密码通常被认为是一种通过排列顺序来混淆信息的方法

1.1凯撒密码

凯撒密码(Caesar cipher)就是将明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量为3时,所有的字母A将被替换成D,B变成E,以此类推

eg:

明文:flag{This is a example!}
偏移量:3
密文:iodj{wklv lv d hadpsoh!}

在线解密网址

https://www.qqxiuzi.cn/bianma/kaisamima.php

但是ctf比赛中,还有一种变异的凯撒,就是每一位的偏移量都是不一样的,但是之间的偏移量是有一定的规律的

eg:

image-20241219151810679

先对应码表

可以看到第一个字符向后移了5,第二个向后移了6,第三个向后移了7,以此类推

str="afZ_r9VYfScOeO_UL^RWUc"
k=5
for i in str:print(chr(ord(i)+k),end='')k+=1
#以上只是一个简单的例子
#flag{Caesar_variation}

1.2培根密码

培根密码是一种替换密码,每个明文字母被一个由5字符组成的序列替换。以下是全部的对应关系(另一种对于关系是每个字母都有唯一对应序列,I和J与U/V各自都有不同对应序列):

如果你看到一串字符里全是A和B,并且5个一组的时候,没错了,就是他。培根加密只能加密字母。 flag ==>AABAB ABABB AAAAA AABBA

image-20241219152332898

image-20241219154116458

网址

https://www.metools.info/code/bacon193.html#google_vignette

1.3维吉尼亚密码

维吉尼亚密码是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时一般为循环使用,密钥越长相对破解难度越大)来决定用哪一行的密表来进行替换,以此来对抗字频统计

image-20241219162905462

为了生成密码,需要使用表格法。这一表格包括了 26 行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换

对于明文的第一个字母 A,对应密钥的第一个字母 L,于是使用表格中 L 行字母表进行加密,得到密文第一个字母 L。类似地,明文第二个字母为 T,在表格中使用对应的 E 行进行加密,得到密文第二个字母 X。以此类推,可以得到:

明文:ATTACKATDAWN
密钥:LEMONLEMONLE
密文:LXFOPVEFRNHR

解密的过程则与加密相反。例如:根据密钥第一个字母 L 所对应的 L 行字母表,发现密文第一个字母 L 位于 A 列,因而明文第一个字母为 A。密钥第二个字母 E 对应 E 行字母表,而密文第二个字母 X 位于此行 T 列,因而明文第二个字母为 T。以此类推便可得到明文

链接:

http://www.hiencode.com/

1.4埃特巴什码

埃特巴什码是一种以字母倒序排列作为特殊密钥的替换加密,也就是下面的对应关系

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA
明文:flag{This is a game!}
密文:uozt{gsrh rh z tznv!}

链接:

http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

1.5栅栏密码

特点:栅栏密码是一种简单的移动字符位置的加密方法,加密前后的字符数不变

栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文

一般题目都会告诉栅栏数,如果没有只能进行枚举了

链接:https://www.qqxiuzi.cn/bianma/zhalanmima.php

1.6摩斯密码

特征:用点(.)和划(-)来编码范围0-9、A-Z的字符,字母不区分大小写,两个字母之间的空格用斜杠(/)或者三个点(.)或者一个划(-)表示,两个单词之间的间隔是七个点(.)。 根据摩斯编码的原理,CTF中也有出现过变种的摩斯编码,比如点(.)和划(-)用数字0和1来表示等此类变种的思路。

http://ctf.ssleye.com/morse.html (编码的时候不转换空格)  http://rumkin.com/tools/cipher/morse.php (空格用斜杠表示)

1.7ROT5/13/18/47

ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。

ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。

ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,

链接:http://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php

1.8常见的编码

1.8.1base家族

base64:

特征特点:密文由64个字符(A-Z,a-z,0-9,+,/)组成,末尾可能会出现1或2个’=’ 最多有2个

image-20241219165105044

链接:

http://ctf.ssleye.com/base64.html

base32:

密文由32个字符(A-Z,2-7)组成,末尾可能会有‘=’,但最多有6个

链接:

http://ctf.ssleye.com/base64.html

base16:

密文由16个字符(0-9,A-F)组成

链接:

http://ctf.ssleye.com/base64.html

base36:

密文由36个字符(0-9,a-z)组成,加密仅支持整数数字,解密仅支持字符串,不支持中文 密文由36个字符(0-9,A-Z)

链接:

http://ctf.ssleye.com/base36w.html

base58:

Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址,Base58不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”,以及”+”和”/”符号

链接:

http://ctf.ssleye.com/base58w.html

base62:

密文由62字符(0-9,a-z,A-Z)组成

链接:

https://base62.io/(支持中文)

http://decode-base62.nichabi.com http://ctf.ssleye.com/base62.html(仅支持数字)

base91:

密文由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成

链接:

http://ctf.ssleye.com/base91.html

base100:

也就是常见的表情符号

1.8.2ascii编码

用1个字节的8位数来编码英文字符集,即所有字母数字等英文符号可以用二进制数、十进制、十六进制来表示。比如大写字母A可分别用二进制数(01000001)、十进制(65)、十六进制(0x41)来表示

个别的字母就是通过码表对照即可,这里可以结合变异的凯撒(对照前面的几个字母flag)

链接:

http://www.ab126.com/goju/1711.html

http://ctf.ssleye.com/cencode.html

1.8.3unicode编码

国际标准字符,将全球的各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台文本信息的转换,当编码和解码的字符集出现不一致的时候就会出现乱码。

一般有四种表示形式

image-20241219170119023

链接:

http://tool.chinaz.com/tools/unicode.aspx

1.8.4URL编码

一个字符ascii码的十六进制,然后在前面加上%

%66   f
%61   a
%6C   l
%67   g

链接:

http://www.hiencode.com/url.html

1.8.5brainfuck

密文由+.<>[]’ && ‘!.?或者’+-.<>[]’等组成

一般和Ook编码出现

链接:

https://www.splitbrain.org/services/ook

还有许多的编码,就不再阐述了

Reference

https://cloud.tencent.com/developer/article/1419464

https://xcbyao.com/2020/01/21/Crypto_classical/

https://blog.csdn.net/wanfengchuifu/article/details/135910625

https://hello-ctf.com/HC_Crypto/Classicalcipher/#rail-fence

后记

自己也是一个刚刚学习的小白...

如果文中有错误的地方,请各位大佬不吝赐教,也欢迎大家来捧场!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】组合数学初步

一些初等的组合数学知识二项式系数 定义: 我们在高中时常见的二项式系数的形式是 \[C_{n}^{k} = \frac{n!}{k!(n-k)!} \]但下文将采用如下的定义: \[\binom{n}{k} = \begin{cases}\dfrac{n^{\underline{k}}}{k!} & k \ge 0\\\\0 & k < 0\end{cases} \]注意这里对 …

翻转字符串翻转单词

一、翻转字符串问题描述 请实现⼀个算法,在不使⽤额外数据结构和储存空间的情况下,翻转⼀个给定的字符串(可以使⽤单个过程变量)。 解题思路 由于不允许使用额外的数据接口和存储空间,所以我们将⼀个字符串以中间字符为轴,前后翻转,也就是将str[len]赋值给str[0],将str[0…

拒绝 Helm? 如何在 K8s 上部署 KRaft 模式 Kafka 集群?

首发:运维有术 今天分享的主题是:不使用 Helm、Operator,如何在 K8s 集群上手工部署一个开启 SASL 认证的 KRaft 模式的 Kafka 集群? 本文,我将为您提供一份全面的实战指南,逐步引导您完成以下关键任务:配置 Kafka Secret:管理用户密码和集群 ID 配置 Kafka Service:使…

Vulnhub 靶场 Jetty: 1

前期准备 靶机地址:https://www.vulnhub.com/entry/jetty-1,621/ Description Back to the Top The company Aquarium Life S.L. has contacted you to perform a pentest against one of their machines. They suspect that one of their employees has been committing frau…

人车防碰撞识别智慧矿山一体机矿山监控系统中的平台一体机和解码器如何选型?

在构建高效、可靠的视频监控系统时,选择合适的平台一体机和解码器是至关重要的一步。这不仅关系到监控系统的稳定性和可靠性,还直接影响到监控画面的清晰度和系统的扩展性。以下是在选择过程中需要考虑的关键因素,以确保您的监控系统能够满足特定场景的需求,并在未来几年内…

2024年项目管理软件对比:14款高效工具帮你提升工作效率

在快节奏的现代社会,项目管理的重要性日益凸显。为了提高工作效率,各类项目管理软件应运而生。本文将为您介绍14款高效的项目管理工具,包括禅道、Trello、Jira、Asana、Teambition、Wrike、Monday.com、ClickUp、ProjectManager、Basecamp、Zoho Projects、Smartsheet、Liqu…

2024年项目管理软件对比:14款高效工具帮你提升工作效

在快节奏的现代社会,项目管理的重要性日益凸显。为了提高工作效率,各类项目管理软件应运而生。本文将为您介绍14款高效的项目管理工具,包括禅道、Trello、Jira、Asana、Teambition、Wrike、Monday.com、ClickUp、ProjectManager、Basecamp、Zoho Projects、Smartsheet、Liqu…

vb编译环境运行没问题,生成exe运行时报错,错误48加载dll错误,右键以管理员身份运行可以但麻烦,其解决办法如下。

解决办法(推荐): 打开vb后,弹出新建工程标准exe,要点打开。 然后再打开已建的工程,这样生成的exe可以直接双击运行,就不会报错了。2、如需重装vb,要记得“数据访问”点“更改选项”去掉ADO和RDS前面的勾选,不然会一直停在更新状态。 1.打开安装包点击SETUP.EXE(如果会…

Java项目实战之Java小游戏-俄罗斯方块设计与实现(附项目源代码地址)

该项目gitee地址:https://gitee.com/lsy_loren/loren-tetris.git一、游戏概述 本游戏是一款经典的俄罗斯方块游戏,使用Java语言开发,具有图形用户界面(GUI)。玩家通过操作方块的移动、旋转和下落,使其填满一行或多行来消除得分,并随着得分的增加提升等级。游戏还具备暂停…

charles中map local改写接口返回参数

先找到接口-》右键-》save response -》存入桌面然后文件的返回参数 右键-》map local 即可修改返回结果

renben-openstack-keystone操作

controller节点操作source /root/keystonerc_admin 1.查看openstack中keystone的endpoint openstack endpoint list +----------------------------------+-----------+--------------+--------------+| ID | Region | Service Name | Servic…