首页 > 其他分享 >密码学-古典密码

密码学-古典密码

时间:2024-12-19 17:46:24浏览次数:4  
标签:编码 http com 字母 密码 古典 密文 密码学

密码学-古典密码

前言

古典密码学(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,com,字母,密码,古典,密文,密码学
From: https://www.cnblogs.com/youngbo-24/p/18617645

相关文章

  • 手把手教你springboot中的密码加密
    1.引入SpringSecurity依赖首先,需要在pom.xml中添加SpringSecurity依赖,因为BCryptPasswordEncoder是SpringSecurity提供的类:<dependencies><!--SpringSecurity依赖--><dependency><groupId>org.springframework.boot</groupId>......
  • 一文搞懂编程在密码学与区块链加密中的应用
    ```html 一文搞懂编程在密码学与区块链加密中的应用随着科技的飞速发展,密码学和区块链技术成为了信息安全领域的重要组成部分。它们不仅为数据提供了强大的保护机制,还为金融、医疗、法律等多个行业带来了革命性的变化。本文将深入探讨编程语言如何在这些领域中发挥关键作用。......
  • 网站提示修改密码,如何处理网站提示修改密码的情况
    当网站提示您修改密码时,这是为了确保您的账户安全。以下是详细的步骤:登录网站:打开浏览器,输入网站地址,使用提示的账户登录。进入账户设置:登录后,找到并点击“账户设置”、“个人资料”或类似的选项。找到密码修改选项:在账户设置页面中,找到“修改密码”或“更改密码......
  • 如何修改网站后台密码,网站后台密码修改指南
    修改网站后台密码是确保网站安全的重要步骤。以下是详细的步骤:登录后台管理系统:打开浏览器,输入后台管理地址(如http://yourdomain.com/admin.php或http://yourdomain.com/wp-admin),使用管理员账号登录。导航到用户管理:在后台左侧菜单中,找到“用户”或“用户管理”选项,点......
  • ZZNUOJ_1341:简单密码破解(C/C++/Java)
    题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名......
  • AT24C02密码锁,51单片机。
    #include<REGX52.H>#include<Buttons.h>#include<AT24C02.h>#include<LCD1602.h>#include<Delay.h>#include<security.h>#include<Buzzer.h>unsignedcharOriginal_Password[6]={0};//原始密码数组unsignedcharN......
  • 清明上河图密码 26 集 电视剧 All In One
    清明上河图密码26集电视剧AllInOne《清明上河图密码》2024年播出的中国大陆古装悬疑电视剧,改编自中国大陆作家冶文彪创作的同名小说,由电影《男欢女爱》的导演杨帆与《深渊宝藏》的导演熊琛联合执导,张颂文、白百何领衔主演,周一围、侯岩松特别主演,张耀、夏梦、林家川、是安......
  • 解锁 SSM 与 Vue 在新锐台球厅管理系统设计与实现中的融合密码
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • FTP服务器保存账号密码自动登录后如何退出并切换用户名登录其他账号
    前言大家好,我是小徐啊。我们在开发Java应用的时候,经常是需要进行传输文件的。而传输文件,最重要的方式就是ftp传输。windows自带了ftp传输功能,我们就不需要额外安装ftp软件,就能传输文件了。这非常方便。但有时候,我们登录了一个账号之后,并且勾选了记住密码,导致我们后面想切换账号......
  • 数据库怎么修改网站密码,深入解析数据库密码管理最佳实践
    要通过数据库修改网站密码,可以按照以下步骤操作:确定数据存储位置:了解您的网站数据存储在哪个数据库中,常见的数据库有MySQL、PostgreSQL等。登录数据库:使用数据库管理工具连接到相应的数据库。找到用户表:在数据库中找到存储用户信息的表,通常包含用户名和密码字段。修改密码:执......