古典密码汇总。

article/2025/9/25 9:22:39

一、密码类型汇总

 23、维吉尼亚密码(Vigenère Cipher)

【Vigenère Cipher】 

  由于频率分析法可以有效的破解单表替换密码,法国密码学家维吉尼亚于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]。 

  [-----------------图-----------------] 

   a b c d e f g h i j k l m n o p q r s t u v w x y z 
  a A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
  b B C D E F G H I J K L M N O P Q R S T U V W X Y Z A 
  c C D E F G H I J K L M N O P Q R S T U V W X Y Z A B 
  d D E F G H I J K L M N O P Q R S T U V W X Y Z A B C 
  e E F G H I J K L M N O P Q R S T U V W X Y Z A B C D 
  f F G H I J K L M N O P Q R S T U V W X Y Z A B C D E 
  g G H I J K L M N O P Q R S T U V W X Y Z A B C D E F 
  h H I J K L M N O P Q R S T U V W X Y Z A B C D E F G 
  i I J K L M N O P Q R S T U V W X Y Z A B C D E F G H 
  j J K L M N O P Q R S T U V W X Y Z A B C D E F G H I 
  k K L M N O P Q R S T U V W X Y Z A B C D E F G H I J 
  l L M N O P Q R S T U V W X Y Z A B C D E F G H I J K 
  m M N O P Q R S T U V W X Y Z A B C D E F G H I J K L 
  n N O P Q R S T U V W X Y Z A B C D E F G H I J K L M 
  o O P Q R S T U V W X Y Z A B C D E F G H I J K L M N 
  p P Q R S T U V W X Y Z A B C D E F G H I J K L M N O 
  q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P 
  r R S T U V W X Y Z A B C D E F G H I J K L M N O P Q 
  s S T U V W X Y Z A B C D E F G H I J K L M N O P Q R 
  t T U V W X Y Z A B C D E F G H I J K L M N O P Q R S 
  u U V W X Y Z A B C D E F G H I J K L M N O P Q R S T 
  v V W X Y Z A B C D E F G H I J K L M N O P Q R S T U 
  w W X Y Z A B C D E F G H I J K L M N O P Q R S T U V 
  x X Y Z A B C D E F G H I J K L M N O P Q R S T U V W 
  y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X 
  z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y 

  假如对如下明文加密: 

  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 

在线解密网站:维吉尼亚密码加密/解密 - 一个工具箱 - 好用的在线工具都在这里! (atoolbox.net)

24、培根密码

f59b66db039349feaa64433559a7faee.png

25、猪圈密码。

4cf0dfcd56b641a0801ea46807a438cd.png

猪圈密码在线解密平台:http://ctf.ssleye.com/pigpen.html 

26、【字母表顺序】-数字 
  加密的时候,经常要把A~Z这26个字母转换成数字,最常见的一种方法就是取字母表中的数字序号。A代表1,B代表2,C代表3... 

  字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
  数字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 

27、【进制转换密码】 

例如二进制:1110 10101 1101 10 101 10010 1111 1110 101 
转为十进制:14 21 13 2 5 18 15 14 5 
对应字母表:number 

28、【倒序】 


  加密时为经常要对字符进行倒序处理。如果让你按abcdef...的顺序背出字母表的每个字母会很容易,
  但是如果是zyxwvu...的顺序那就很难背出来了。一个很熟悉的单词,如果按相反的顺序拼写,可能就会感到很陌生。 

  例如“love”字母倒过来拼就是“evol”。 

  具体加密时倒序有很多种方案,需要灵活运用。例如: 

  每个单词的倒序:siht si a tset - this is a test 
  整句的倒序:tset a si siht - this is a test 
  数字的倒序:02 50 91 02 - 20 05 19 20(test) 

29、【间隔】 


  单词之间的间隔一般使用空格。在加密时常常要去掉空格,但有时某些字母或数字来替代空格也不失为一种好的加密方案。
  错误空格位置也会起到很强的误导作用。 

  例如:t hi sis at est - this is a test 

30、【字母频率】 
  频率分析法可以有效的破解单字母替换密码。 

  关于词频问题的密码,我在这里提供英文字母的出现频率给大家,其中数字全部是出现的百分比: 
  a 8.2 b 1.5 c 2.8 d 4.3 
  e 12.7 f 2.2 g 2.0 h 6.1 
  i 7.0 j 0.2 k 0.8 l 4.0 
  m 2.4 n 6.7 o 7.5 p 1.9 
  q 0.1 r 6.0 s 6.3 t 9.1 
  u 2.8 v 1.0 w 2.4 x 0.2 
  y 2.0 z 0.1 

  词频法其实就是计算各个字母在文章中的出现频率,然后大概猜测出明码表,最后验证自己的推算是否正确。
  这种方法由于要统计字母出现频率,需要花费时间较长。参考《跳舞的小人》和《金甲虫》。 

31、【Polybius密码(Polybius Cipher)】 

  也称棋盘密码,是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,产生于公元前两世纪的希腊,
  相传是世界上最早的一种密码。 

  假设我们需要发送明文讯息 “Attack at once”, 用一套秘密混杂的字母表填满波利比奥斯方阵,像是这样: 

   A D F G X 
  A b t a l p 
  D d h o z k 
  F q f v s n 
  G g j c u x 
  X m r e w y 

  i和j视为同一个字,使字母数量符合 5 × 5 格。之所以选择这五个字母,是因为它们译成摩斯密码时不容易混淆,
  可以降低传输错误的机率。使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母。
  可将该讯息转换成处理过的分解形式。 

  明文:A T T A C K A T O N C E 
  密文:AF AD AD AF GF DX AF AD DF FX GF XF 

  A,D,F,G,X也可以用数字1,2,3,4,5来代替,这样密文就成了: 

  13 12 12 13 43 25 13 12 23 35 43 53 

------------------------------------------------------------------------- 

32、【ADFGX/ADFGVX密码(ADFGX/ADFGVX Cipher)】 

ADFGX 
  1918年,第一次世界大战将要结束时,法军截获了一份德军电报,电文中的所有单词都由A、D、F、G、X五个字母拼成,
  因此被称为ADFGX密码。ADFGX密码是1918年3月由德军上校Fritz Nebel发明的,是结合了Polybius密码和置换密码的双重加密方案。
  A、D、F、G、X即Polybius方阵中的前5个字母。 

  明文:A T T A C K A T O N C E 
  经过Polybius变换:AF AD AD AF GF DX AF AD DF FX GF XF 

  下一步,利用一个移位密钥加密。假设密钥是“CARGO”,将之写在新格子的第一列。再将上一阶段的密码文一列一列写进新方格里。 

  C A R G O 
  _________ 
  A F A D A 
  D A F G F 
  D X A F A 
  D D F F X 
  G F X F X 

  最后,密钥按照字母表顺序“ACGOR”排序,再按照此顺序依次抄下每个字母下面的整列讯息,形成新密文。如下: 

  FAXDF ADDDG DGFFF AFAXX AFAFX 

  在实际应用中,移位密钥通常有两打字符那么长,且分解密钥和移位密钥都是每天更换的。 

ADFGVX 
  在1918年6月,再加入一个字V扩充。变成以6×6格共36个字符加密。这使得所有英文字母(不再将I和J视为同一个字)以及数字0到9都可混合使用。
  这次增改是因为以原来的加密法发送含有大量数字的简短信息有问题。 

33、【希尔密码(Hill Cipher)】 

  希尔密码就是矩阵乘法密码,运用基本矩阵论原理的替换密码。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,
  跟一个n×n的密钥矩阵相乘,再将得出的结果模26。希尔密码的优点是完全隐藏了字符的频率信息,弱点是容易被已知明文攻击击破。 

加密 
  例如:密钥矩阵 
  1 3 
  0 2 

  明文:HI THERE 

  去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元: 

  HI TH ER EE 
  8 20 5 5 
  9 8 18 5 

  HI 经过矩阵运算转换为 IS,具体算法参考下面的说明: 

  |1 3| 8 e1*8+3*9=35 MOD26=9 =I 
  |0 2| 9 e0*8+2*9=18 MOD26=18=S 

  用同样的方法把“HI THERE”转换为密文“IS RPGJTJ”,注意明文中的两个E分别变为密文中的G和T。 

解密 
  解密时,必须先算出密钥的逆矩阵,然后再根据加密的过程做逆运算。 

  逆矩阵算法公式: 
  |A B| = 1/(AD-BC) * | D -B| 
  |C D| |-C A| 

  例如密钥矩阵= 
  |1 7| 
  |0 3| 
  AD-BC=1*3-0*7=3 3*X=1 mod26 所以 X=9 
  因此 
  |1 7| 的逆矩阵为: 9 * |3 -7| 
  |0 3| |0 1| 

  假设密文为“FOAOESWO” 

  FO AO ES WO 
   6 1 5 23 
  15 15 19 15 

  9* |3 -7| | 6| = 9*(3*6-7*15)=-783 mod26 = 23=W 
   |0 1| |15| = 9*(0*6+1*15)= 135 mod26 = 5 =E 

  所以密文“FOAOESWO”的明文为“WEREDONE” 

------------------------------------------------------------------------- 


34、【Playfair密码(Playfair Cipher)】 

  Playfair将明文中的双字母组合作为一个单元对待,并将这些单元转换为双字母组合。
  加密后的字符出现的频率在一定程度上被均匀化。 

  5*5变换矩阵(I或J视为同一字符): 

  C I P H E 
  R A B D F 
  G K L M N 
  O Q S T U 
  V W X Y Z 

  加密规则:按成对字母加密 

  相同对中的字母加分隔符(如x) 
  ballon -> ba lx lo on 
  同行取右边:he->ec 
  同列取下边:dm->mt 
  其他取交叉:kt->mq od->tr 

  例如:ballon -> ba lx lo on -> db sp gs ug 



35、【费娜姆密码】(密码:00110110010001001100100010000010110;密钥:study)

二战时德军使用过的一种密码,其实是利用了二进制的表示法来替代字母,有如下的表格作为基础:

A 1000001 B 1000010 C 1000011 D 1000100 E 1000101 F 1000110 G 1000111 H 1001000 I 1001001 J 1001010

K 1001011 L 1001100 M 1001101 N 1001110 O 1001111 P 1010000 Q 1010001 R 1010010 S 1010011 T 1010100

U 1010101 V 1010110 W 1010111 X 1011000 Y 1011001 Z 1011010

那么,比如我们要加密“Hello”,密钥用“study”,则以如下方式进行加密:

H E L L O = 1001000 1000101 1001100 1001100 1001111
S T U D Y = 1010011 1010100 1010101 1000100 1011001

加密原则:1+1=0,0+0=0,1+0=1

于是得密文:00110110010001001100100010000010110

那么解题目中的密文,需要遵循以下几个原则和步骤,

1,划分,即每七个数字为一组;

2,对应,找出密文每个字母对应的数字,再与上述数字对应;

3,转换,遵循上述加密原则,逆用即可;

4,解密,得出新的一组数字,对应字母,得出明文。

36、Rabbit密码

结尾有+,并且开头是U2FsdGVkX1/

密文 :U2FsdGVkX19mGsGlfI3nciNVpWZZRqZO2PYjJ1ZQuRqoiknyHSWeQv8ol0uRZP94
MqeD2xz+

密钥:Rabbit

37 Urlencode

        英文不变,中文变成%E7%BD%这些字符。经常浏览器搜索的时候可以见到,比如你百度搜索一共中文,然后复制网站,就会发现英文字母还是英文字母,中文字母全变成了%E7%BD这些。

        然后百分号有的时候换成=,即=E7=BD类似的,只需要python把=换成%,再解码即可。

str='=E7=94=A8=E4=BD=A0=E9=82=A3=E7=81=AB=E7=83=AD=E7=9A=84=E5=98=B4=E5=94=87=E8=AE=A9=E6=88=91=E5=9C=A8=E5=8D=88=E5=A4=9C=E9=87=8C=E6=97=A0=E5=B0=BD=E7=9A=84=E9=94=80=E9=AD=82'
print(str.replace('=','%'))

38 AtBash埃特巴什码

他就是一种特殊的移位密码。

  • 最后一个字母代表第一个字母,倒数第二个字母代表第二个字母

但是注意:有的题目他区分大小写,有的题目他不区分大小写。

要是不区分大小写:就用工具即可,要是区分,用如下code

DIC_LOWER = "abcdefghijklmnopqrstuvwxyz"
DIC_UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DIC_LOWER_RE = DIC_LOWER[::-1]
DIC_UPPER_RE = DIC_UPPER[::-1]def encrypt_atbash(string):ciphertext = ""for i in string:if i in DIC_LOWER:ciphertext += DIC_LOWER_RE[DIC_LOWER.index(i)]elif i in DIC_UPPER:ciphertext += DIC_UPPER_RE[DIC_UPPER.index(i)]else:ciphertext += ireturn ciphertextdef decrypt_atbash(string):plaintext = ""for i in string:if i in DIC_LOWER_RE:plaintext += DIC_LOWER[DIC_LOWER_RE.index(i)]elif i in DIC_UPPER:plaintext += DIC_UPPER[DIC_UPPER_RE.index(i)]else:plaintext += ireturn plaintextif __name__ == '__main__':ciphertext_ = encrypt_atbash("HaHa")plaintext_ = decrypt_atbash("uozt{Zgyzhv_xlwv_uiln_xguhsld}")print(plaintext_)

39、敲击吗tap code

 

40、曲路密码

 

二、对称密码。 

U2Fsd开头的一般都为为AES、DES、3DES等算法。

三、哈希值

特征一般都是小写的字母和数字混合,并且一眼就能看出来每个字符都是十六进制内的字符(0-9,a-f),这样的必为哈希值,比如这个:

a8db1d82db78ed452ba0882fb9554fc


找个在线网站一查即可:

MD5免费在线解密破解_MD5在线加密-SOMD5

  • md5在线解密破解,md5解密加密
  • 免费md5解密,md5在线查询破解,XMD5

CTF中那些脑洞大开的编码和加密 (hackfun.org)


http://chatgpt.dhexx.cn/article/hXdtpbsM.shtml

相关文章

SourceTree的使用

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。 二、下载安装SourceTree步骤 1、下载地址&#xf…

SourceTree使用教程图文详解

作者的其他平台: | CSDN:https://blog.csdn.net/qq_41153943 | 掘金:https://juejin.cn/user/651387938290686 | 知乎:https://www.zhihu.com/people/1024-paper-96 | GitHub:https://github.com/JiangXia-1024?t…

Sourcetree打开之后,闪退,问题处理

1、环境:win11 Sourcetree版本3.4.7 2、处理办法,在资源管理器地址栏输入“%LocalAppData%\Atlassian”,删掉“SourceTree.exe_Url_ampbpf5kvqim4xxkhaykobjynfannkxz”(非SourceTree目录),打开正常。

Sourcetree查看某个文件提交历史记录

1、在文件状态右上角搜索要查看的文件名 2、选择查看的文件名右键 点击变更历史即可

sourcetree使用

由于在工作中负责线上代码的部署和控制,所以对SourceTree的使用场景和使用技巧进行了全面系统的研究和实践,并以经验连载的形式进行了分享。该经验主要是对这些连载经验进行整体的概述,以方便大家的查阅和参考。 方法/步骤 SourceTree使用的…

sourceTree打不开,启动闪退

应该还是缓存文件的问题: C:\Users\wangqiang\AppData\Local\Atlassian 把这个临时文件删掉:

sourcetree使用说明

功能全面介绍 OK,拔山涉水终于安装完毕,进入主页是长这个样子 1.主页 几个按钮作用:如图,其中过滤仓库搜索框其实就是个搜索框,可以根据仓库名字的关键字搜索出仓库,右上角的设置按钮比较简单这里就不再解释大家自行点开一下就明白了 Snip20171208_22.png 新建按钮解释 Sni…

SourceTree解决冲突

1、解决冲突的时候,操作已暂存文件,不操作未暂存文件(开始的时候,这两个区域的文件是一样的,并且都带有感叹号提示) 2、使用他人版本解决冲突,会自动将当前分支对应文档更改成他人文档内容&…

Sourcetree 打开闪退怎么处理

只需要把 C:\Users\15810\AppData\Local\Atlassian 文件下用箭头标记的删除即可

Sourcetree 闪退问题

Sourcetree,有时我们用着用着就用不了,昨天好好的,今天就不能打开了。我遇到这个问题也找找了好多博文看了,也操作。还重新安装还是重新这样。后面发现麻痹的,这软件的打开的权限被限制了。 找到上面的位置&#xff0c…

Git和SourceTree入门教程

转自CSDN:http://blog.csdn.net/collonn/article/details/39259227 -->本教程适用于主流的开源网站github和bitbucket,个人认为sourceTree还是比较好用的git客户端,支持windows和mac os。 -->soureceTree的最新版本可能与此教程的screenshot有些许不同,但大同小异…

SourceTree使用方法

一 、SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。 二、下载安装SourceTree步骤…

Sourcetree使用教程,拉取代码克隆、解决冲突、合并分支

目录 基础配置 基础操作 拉取远程项目 pull(拉取)、commit(提交) 、push(推送) 新建分支 合并分支 Git工作流 冲突解决 配置忽略文件 SourceTree&Git部分名词解释 其他待补充 博客链接:Sourcetree使用教程https://www.zjhuiwan.cn/info/20211014/422…

Git(5) SourceTree安装使用

文章目录 一、前言二、SourceTree安装三、SourceTree使用1、克隆仓库&拉取代码&推送代码2、创建分支&合并分支代码3、标签4、子模块5、子树6、贮藏7、重置提交a、软合并:保持所有本地改动b、混合合并:保持工作副本并重置索引c、强行合并&…

【全网最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)...

前言: 俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐…

Git 管理工具 SourceTree 的使用(上手简单,不熟悉git命令的开发者必用)

目录 一、SourceTree 概述 二、SourceTree 使用方法 1. 克隆 Git 仓库至本地 2. 推送本地的文件至远程仓库 3. 创建/切换/合并分支 4. 版本回退 一、SourceTree 概述 SourceTree 是一款免费的 Git 和 Hg 客户端管理工具,支持 Git 项目的创建、克隆、提交、pus…

经典传染病SI模型及仿真

SI模型 假设: 1)节点均匀混合 2)感染后染病状态不再改变 3)接触病原体后以一定概率感染: 4)初始状态的人群感染密度为: 则感染过程动力学方程为: 如果设初始感染密度为则感染…

传染病模型及实现(附MATLAB代码)

传染病模型及实现(附MATLAB代码) 问题 一只游船上有800人,一名游客不慎患传染病,12小时后有3人发病,由于船上不能及时隔离,问经过72小时,患此病的人数。 思路 假设游客在船上均匀分布&#…

利用新型冠状病毒感染者数据建模传染病SIS模型并进行拟合、预测等(附实验数据集下载链接,侵删!!!)

SIS模型 仅作交流分享用,已注明参考,如有侵权,请联系博主修改、删除文章 模型解释: 易感者与患病者有效接触即被感染,无潜伏期、无免疫性; 无免疫性解释——病人治愈成为健康人,健康人可再次…

传染病学模型 | Matlab实现SEIR传染病学模型 (SEIR Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SEIR传染病学模型 (SEIR Epidemic Model) 模型介绍 SEIR模型是一种常见的传染病传播模型,用于描述人群感染某种传染病的过程。SEIR模型将人群划分为四个互相转化的状态: 易感者…