666

  • 一. 古典密码

一. 古典密码

1.凯撒密码(Caesar Cipher)

凯撒密码是一种非常古老的密码,其原理是通过字母的位移将原文和密文一一对应。
举个例子:明文是“Hello world”,偏移量为3。
所以A–>C,B–>D,依次类推,
所以密文就是”Khoor zruog“

凯撒密码是一种非常古老的密码,其原理是通过字母的位移将原文和密文一一对应。
举个例子:明文是“Hello world”,偏移量为3。
所以A–>C,B–>D,依次类推,
所以密文就是”Khoor zruog“

根据偏移量的不同,还存在一些特定的凯撒密码名称
偏移量为10:Avocat
偏移量为13:ROT13
偏移量为-5:Cassis
偏移量为-6:Cassette

在线解密网站:https://www.qqxiuzi.cn/bianma/kaisamima.php

2. 培根密码(Bacon‘s Cipher)

培根密码加密时,明文中的每个字母都会转换成5个为一组由a和b组成的英文字母
如下:


可以看到这类密码又一个很明显的特点:只由a和b组成
但是加密解密的时候不分大小写…
所以看到这个密码就很容易想到时培根密码
例如:“Hello” --> “aabbbAABAAABABBABABBABBBA”

在线解密网站:https://tool.bugku.com/peigen/

3. 摩斯密码(Morese Cipher)

相信这个密码应该没人不知道吧!电视剧里发电报一般用的都是这个密码。
摩斯密码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。发明于1837年。
例如:“Hello” --> " … . .-… .-… — "

在线解密网站:moersima.00cha.net

4. 栅栏密码(Rail-fence Cipher)

栅栏密码,就是把要加密的明文分成N个一组,
然后把每组的第1个字连起来,形成一段无规律的话。(其中N称为栏数)
不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。

栅栏密码也分为两种:Z型和W型
好多文章都只讲Z型,但考试经常出W型的,所以我两种都讲一下

Z型(常规)


就是按照N个一组分好后,按列从上到下组合成新的字符串
例如:“Helloworld”
N=2时:“Hloolelwrd”;N=3时:“Hlodeorlwl”

W型(变形)
这个很恶心,我研究了半天才搞出来

W型顾名思义,就是把明文按照W型排列,按行输出
其中栏数N即为行数,如图:(只能画出来了)


栅栏密码(W型)在线解密网站:http://www.atoolbox.net/Tool.php?Id=777
栅栏密码(Z型)在线解密网站:https://www.qqxiuzi.cn/bianma/zhalanmima.php

5. 仿射密码(Affine Cipher)

单表加密的一种,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母。
一般仿射密码都会给你一个a一个b,这是解密的关键

加密函数:E(x)=(ax+b)mod m;
解密函数:D(x)=a^(-1)*(x-b)mod m;

其中涉及到的数学知识是乘法逆元

例子:假设a=5,b=8;明文为AFFINECIPHER
则加密为:

解密为:

而有些仿射密码的题目不会给a和b,而是直接给对应的字符
(2021MSSCTF–Crypto T1)

仿射密码没有在线的解密工具,所以以Python脚本方式展示

def get(a, b):if b == 0:return 1, 0else:k = a //bremainder = a % bx1, y1 = get(b, remainder)x, y =y1, x1 - k * y1return x, ys = input("请输入解密字符:").upper()
a = int(input("请输入a:"))
b = int(input("请输入b:"))#求a关于26的乘法逆元
x, y = get(a, 26)
a1 = x % 26l= len(s)
for i in range(l):cipher = a1 * (ord(s[i])- 65 - b) % 26res=chr(cipher + 65)print(res, end='')

6. 猪圈密码(Pigpen Cipher)

(2020第四届强网杯青少年专项赛线上–Crypto–easy_Crypto)

猪圈密码是一种以格子为基础的简单替代密码,一一对应的
这个玩意儿长这样:


[/i]
[i]遇到之后直接用在线解密平台解密即可[/i]
[i]
猪圈密码在线解密平台:http://ctf.ssleye.com/pigpen.html

7. 维吉尼亚密码(Vigenère Cipher)

是使用一系列凯撒密码组成密码字母表的加密算法

意思是什么呢?

维吉尼亚密码通常会有两个元素:明文和密钥
密钥的长度不一定要和明文长度一样
加密时,密钥先循环称为密钥流,使其与明文长度相同,然后以偏移量加密

ps:偏移量是指当前字母相对于A的偏移量

举个例子:明文时ATTACKDAWN;密钥为LEMON
首先循环密钥形成密钥流:LEMONLEMONLE
然后根据偏移量进行逐个字符的加密
如第1位明文是A,密钥是L,L的偏移量为12-1=11,则加密后应该为(A+11)mod 26,即为L。

同理,第二位明文是T,密文是E,E的偏移量为5-1=4,则加密后应该为(A+4)mod 26,即为X。

依次类推,可以得到密文LXFOPVEFRNHR。

当然,还可以利用图表进行加密(我觉得眼都花了)


i]维吉尼亚密码在线解密网站:http://www.atoolbox.net/Tool.php?Id=856

结尾

以上就是CTF中经常出现的古典密码
其实有些特征都很明显,一看都能看出来是哪种密码(培根,猪圈等)

像凯撒密码这类一般都会给题目提示或者要尝试
密码学只能多练…没别的方法,多见见就知道是谁了
如果进线下赛了就要去网上找解密脚本了(因为线下赛不让联网哈哈)

[二进制安全]CTF中那些古典密码相关推荐

  1. CTF中Crypty(密码类)入门必看

    常见编码 ASCII编码 ASCII码大致可以分为三部分组成: 第一部分是:ASCII非打印控制字符 第二部分是:ASCII打印字符: 第三部分是:扩展ASCII打印字符. 在线ASCII码与进制互相 ...

  2. 【CTF】实验吧 传统知识+古典密码

    对照顺序写下: 根据对应的干支得到 28 30 23 8 17 10 16 30   +甲子 所有的数加60 得到 88 90 83 68 77 70 76 90 找到ASCII码对照表可得到XZSD ...

  3. buuctf密码题 传统知识+古典密码

    传统知识+古典密码 BUUCTF上密码题 根据六十甲子年表推出每个值,然后再加60,得到88 90 83 68 77 70 76 90,ASCII码为XZSDMFLZ 又因为题中提到古典密码,所以想到 ...

  4. ctf中常见的编码和密码收集

    常见的编码和密码收集 常见密码特征 常见的解码网站 常见密码特征 十六进制,八进制,二进制,ascii码 福尔摩斯小人密码:每一个跳舞的小人实际上对应的是英文二十六个字母中的一个,而小人手中的旗子则表 ...

  5. ctf古典密码从0到1

    本文共计6357个词 阅读预计花费8分钟 1.古典密码和现代密码的区别: 2.代换密码 a)单表代换密码 i.字符或数学型 1.凯撒密码 2.仿射密码 3.四方密码 4.培根密码 ii.图表 1.标准 ...

  6. CTF 每日一题 Day18 传统知识+古典密码

    题目名称:传统知识+古典密码 题目类型:Crypto 题目来源:BUUCTF 题目描述:注意:得到的 flag 请包上 flag{} 提交

  7. ctf中ASCII,base64几种密码的基本样式

    发现在ctf中经常会出现各种样式的码需要我们来进行转换,这里大概的总结一下各个码的特点 +AGsAZQB5ADoAaQBhAG0AdQB0AGYANwBlAG4AYwBvAGQAZQBk- 这种是典型 ...

  8. CTF中编码与加解密总结

    CTF中那些脑洞大开的编码和加密 转自:https://www.cnblogs.com/mq0036/p/6544055.html 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到 ...

  9. [CTF]中那些脑洞大开的编码和加密

    [CTF]中那些脑洞大开的编码和加密 摘自:https://www.cnblogs.com/mq0036/p/6544055.html 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会 ...

最新文章

  1. TorchFusion 是一个深度学习框架,主要用于 AI 系统加速研究和开发
  2. 把一个人的特点写具体作文_把一个人的特点写具体500字作文
  3. 对于如何删除redis中geo存入的坐标
  4. 试着用windows live writer来写篇日志
  5. c语言输入坐标判断位置,〓求助〓谁能帮忙编个程序:输入N个点坐标,判断能否构成多边形....
  6. oracle立即关闭数据库,Oracle数据库的起步和关闭
  7. [转载] JAVA数组实现学生成绩统计
  8. 【C/C++】递归算法
  9. 黑马程序员--java基础知识注意点收录
  10. selenium+webdriver错误...exceptions.ElementNotInteractableException: Message: Element is not visible处理
  11. django-admin.py startproject HelloWorld创建文件提示invalid syntax
  12. Canal部署linux mysql同步数据
  13. 美团三面挂了....这个坑千万别踩!
  14. Hexo Butterfly 主题功能拓展 - 标签云 云养猫
  15. Swoole实现基于WebSocket的群聊私聊
  16. CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport
  17. Arduino蓝牙控制三色灯
  18. 基于python-实训基地管理系统-django框架计算机毕业设计源码+系统+数据库+lw文档+调试部署
  19. 概率论考点总结类型26 统计中的卡方分布 t分布F分布
  20. Tomcat安装与使用

热门文章

  1. win2003FTP服务器搭建
  2. 模糊数学学习笔记 4:模糊关系
  3. linux svn配置提交输入备注,linux下svn服务强制添加备注(注释)提交
  4. 2022年注册安全工程师安全生产技术基础考试模拟试题卷及答案
  5. 怎么使用大数据超级短信进行精准引流快速招商?
  6. 响铃:进入深水区的母婴行业,AI成了新的催化剂?
  7. springboot如何将一个对象的所有属性赋值到另外一个对象上,属性名需要相同
  8. android message的作用,Android消息机制之Message解析(面试)
  9. Luogu P7113 [NOIP2020] 排水系统 题解
  10. Windows Server 2016 安装网络负载均衡