古典密码-其他密码
记录一些见过的密码
时间不语,但却回答了很多问题
从网上找了些资料,以及一些大佬的博客,再结合自己所学,收集了一些加密方式。
一、培根密码
把字母用A,B两个字母表示
码表:
明文 | 密文 | 明文 | 密文 | 明文 | 密文 | 明文 | 密文 |
---|---|---|---|---|---|---|---|
A | AAAAA | G | AABBA | N | ABBAA | T | BAABA |
B | AAAAB | H | AABBB | O | ABBAB | U/V | BAABB |
C | AAABA | I/J | ABAAA | P | ABBBA | W | BABAA |
D | AAABB | K | ABAAB | Q | ABBBB | X | BABAB |
E | AABAA | I | ABABA | R | BAAAA | Y | BABBA |
F | AABAB | M | ABABB | S | BAAAB | Z | BABBB |
培根密码不过是用A,B代替0,1表示其在字母表中的顺序(0——25)。
例如字母C的顺序是2,所以其密文是AAABA(00010)
工具:http://rumkin.com/tools/cipher/baconian.php
找了harry师傅的脚本(59条消息) CTF·Crypto·古典密码大全_博多密码_0HB的博客-CSDN博客
1 | __autor__ = '0HB' |
二、栅栏密码
原理
栅栏密码把要加密的明文分成 N 个一组,然后把每组的第 1 个字连起来,形成一段无规律的话。
eg:
1 | 明文:THERE IS A CIPHER |
自己写了个加密代码
1 | plaintext = "THEREISACIPHER" |
工具:
栅栏密码_栅栏密码在线加密解密【W型】-ME2在线工具 (metools.info)
栅栏密码在线加密解密 - 千千秀字 (qqxiuzi.cn)
三、曲路密码
原理
曲路密码(Curve Cipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)
eg:
1 | 明文:The quick brown fox jumps over the lazy dog |
填入5行7列的表格(事先约定填充的行列数)
T | h | e | q | u | i | c |
---|---|---|---|---|---|---|
k | b | r | o | w | n | f |
o | x | j | u | m | p | s |
o | v | e | r | t | h | e |
l | a | z | y | d | o | g |
加密的回路线(事先约定)
1 | 密文:gesfc inpho dtmwu qoury zejre avxbh Tkool |
四、列位移密码
列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。
eg:
1 | 明文:The quick brown fox jumps over the lazy dog |
填入5行7列的表格(事先约定填充的行列数)
T | h | e | q | u | i | c |
---|---|---|---|---|---|---|
k | b | r | o | w | n | f |
o | x | j | u | m | p | s |
o | v | e | r | t | h | e |
l | a | z | y | d | o | g |
选取密钥: how are u
按 how are u
在字母表中的出现的先后顺序进行编号,我们就有 a 为 1,e 为 2,h 为 3,o 为 4,r 为 5,u 为 6,w 为 7,所以先写出 a 列,其次 e 列,以此类推
最后得到的密文是qoury inpho Tkool hbxva uwmtd cfseg erjez
五、01248密码
01248密码又称云影密码
原理
使用 0,1,2,4,8 四个数字,其中把0当间隔,被0间隔开的数字进行相加,表示字母A—Z。eg:28代表10,即字母J
这里以2023HDCTF——爬过小山去看云
题目:
1 | 密文:ymyvzjtxswwktetpyvpfmvcdgywktetpyvpfuedfnzdjsiujvpwktetpyvnzdjpfkjssvacdgywktetpyvnzdjqtincduedfpfkjssne |
先将密文进行Hill密码解密,然后得到的密文是:842084210884024084010124
1 | 842084210884024084010124 |
解密脚本
自己写的解密脚本,可能有错
1 | cipher = "" #输入密文,密文由01248构成 |
加密脚本
自己写的,可能有误
1 | message = "" #输入要加密的字符串 |
六、JSFuck
原理
JSFuck 可以只用 6 个字符 []()!+
来编写 JavaScript 程序。比如我们想用 JSFuck 来实现 alert(1)
代码如下
1 | [][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]][([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+([][[]]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[+!+[]]]]+([][[]]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]((![]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+[+!+[]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]])() |
这个一点没理解
工具:
JSFuck - Write any JavaScript with 6 Characters: !+
七、BrainFuck
一种极小化的计算机语言,下面链接有详解。本人只是浅浅的了解了一下
BrainFuck用> < + - . ,[ ]
八种符号替换C语言的各种语法和命令
其含义如下:
1 | > :指针加一 |
详细可见下面文章:
(59条消息) Brainfuck语言入门_bf语言_csuzhucong的博客-CSDN博客
工具:
[Brainfuck/Ook! Obfuscation/Encoding splitbrain.org]
八、Ook
Ook和BrainFuck类似,也是用了替换,Ook只有三个不同的语法:
1 | Ook. Ook? Ook! |
可参考下面文章:Brainfuck与Ook!编程语言解析与解密 - M4x - 博客园 (cnblogs.com)
工具
[Brainfuck/Ook! Obfuscation/Encoding splitbrain.org]
九、猪圈密码(含变种)
根据码表
其来源于
变种
十、舞动的小人密码
十一、键盘密码
键盘密码就是用手机键盘或电脑键盘进行加密的密码
手机键盘密码
关于手机键盘加密还有另一种方式,就是拼音具体参照手机键盘来打,例如:「数字」表示出来就是:748 94。
电脑键盘棋盘
这个感觉挺怪的
电脑键盘坐标
用字母在电脑键盘上的坐标来表示,比如B表示为35
电脑键盘QWE
用QWE代表ABC,依次推下去
1 | QWERTYUIOP表示ABCDEFGHIJ |
QWE包围
1 | 解密方式:每组密文所围住的按键上的字符 |
代换
1 | q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m替换成 |
十二、古埃及象形文字
十三、宝可梦图腾
十四、精灵语
十五、古精灵语
十六、夏多密码
夏多密码又称曲路密码
十七、圣堂武士密码
十八、盲文
十九、外星人密码
二十、音乐密码
二十一、标准银河密码
二十二、天干地支表
二十三、摩斯密码
在线解密:在线摩斯电码 - 码工具 (matools.com)
二十四、玛雅数字
这个是自己在做题的时候积累的