常见编码
1、ASCII码
加解密工具:BerylEnigma
2、base 家族
常见的有
加解密工具:BerylEnigma、basecrack
base64
base16
base32
base58
base62
base85
base91
base92
3、shellcode 编码
4、Quoted-printable 编码
5、xxencode
XXencode 将输入文本以每三个字节为单位进行编码。如果最后剩下的字符少于三个字节,不够的部分用零补齐。这三个字节共有 24 个 Bit,以 6bit 为单位分为 4 个组,每个组以十进制来表示所出现的数值只会落在 0 到 63 之间。以所对应值的位置字符代替。它所选择的可打印字符是:+0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共 64 个字符。跟 base64 打印字符相比,就是 UUencode 多一个“-” 字符,少一个”/”字符
6、UUencode
UUencode 是一种二进制到文字的编码,最早在 unix 邮件系统中使用,全称:Unix-to-Unix encoding,UUencode 将输入文本以每三个字节为单位进行编码,如果最后剩下的字符少于三个字节,不够的部分用零补齐。三个字节共有 24 个 Bit,以 6-bit 为单位分为 4 个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在 0 到 63 之间。然后将每个数加上 32,所产生的结果刚好落在 ASCII 字符集中可打印字符(32-空白…95-底线)的范围之中。
UUencode
7、URL编码
url 编码又叫百分号编码,是统一资源定位(URL)编码方式。URL 地址(常说网址)规定了常用的数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx 编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如 js:有 encodeURI、encodeURIComponent,PHP 有 urlencode、urldecode等。编码方法很简单,在该字节 ascii 码的的 16 进制字符前面加%. 如 空格字符,ascii 码是32,对应 16 进制是’20’,那么urlencode 编码结果是:%20。
8、Unicode编码
Unicode 编码有以下四种编码方式:
源文本:The
&x [Hex]:&x0054;&x0068;&x0065;
& [Decimal]:&00084;&00104;&00101;
\U [Hex]:\U0054\U0068\U0065
\U+ [Hex]:\U+0054\U+0068\U+0065
Unicode编码
9、Escape/Unescape 编码
Escape/Unescape 加密解码/编码解码,又叫%u 编码,采用 UTF-16BE 模式, Escape 编码/加密,就是字符对应 UTF-16 ,16 进制表示方式前面加%u。Unescape 解码/解密,就是去掉"%u"后,将 16 进制字符还原后,由 utf-16 转码到自己目标字符。如:字符“中”,UTF-16BE 是:“6d93”,因此Escape 是“%u6d93”。
源文本:The
编码后:%u0054%u0068%u0065
10、HTML 实体编码
HTML 实体是一段以连字符号(&)开头、以分号(;)结尾的字符串。用以显示不可见字符及保留字符(如 HTML 标签)在前端,一般为了避免 XSS 攻击,会将 <> 编码为 < 与 >,这些就是 HTML 实体编码。
11、敲击码
敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于 5×5 方格波利比奥斯方阵来实现的,不同点是是用 K 字母被整合到 C 中。
12、摩尔斯电码
摩尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在 1836 年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下 5种字符组成:
- 点(.)
- 划(-)
- 每个字符间短的停顿(通常用空格表示停顿)
- 每个词之间中等的停顿(通常用
/
划分) - 以及句子之间长的停顿
13、编码的故事
换位密码
1、栅栏密码
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成 N 个一组,然后把每组的第 1 个字符组合,每组第 2 个字符组合…每组的第 N(最后一个分组可能不足 N 个)个字符组合,最后把他们全部连接起来就是密文,这里以 2 栏栅栏加密为例。
明文:The quick brown fox jumps over the lazy dog
去空格:Thequickbrownfoxjumpsoverthelazydog
分组:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g
第一组:Teucbonojmsvrhlzdg
第二组:hqikrwfxupoeteayo
密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo
2、曲路密码
曲路密码(Curve Cipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)。
明文:The quick brown fox jumps over the lazy dog
填入 5 行 7 列表(事先约定填充的行列数)
加密的回路线(事先约定填充的行列数)
密文:gesfc inpho dtmwu qoury zejre hbxva lookT
3、列移位密码
列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。下面我们以明文 The quick brown fox jumps over the lazy dog,密钥 how are u 为例:
填入 5 行 7 列表(事先约定填充的行列数,如果明文不能填充完表格可以约定使用某个字母进
行填充)
密钥:how are u
按 how are u 在字母表中的出现的先后顺序进行编号,我们就有 a 为 1,e 为 2,h 为 3,o为 4,r 为 5,u 为 6,w 为 7,所以先写出 a 列,其次 e 列,以此类推写出的结果便是密文:
h o w a r e y
3 4 7 1 5 2 6
密文:qoury inpho Tkool hbxva uwmtd cfseg erjez
替换加密
1、埃特巴什码
埃特巴什码(Atbash Cipher)是一种以字母倒序排列作为特殊密钥的替换加密,也就是下面的对应关系:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA
明文:the quick brown fox jumps over the lazy dog
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
2、凯撒密码
凯撒密码(Caesar Cipher 或称恺撒加密、恺撒变换、变换加密、位移加密)是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类推。
3、ROT5/13/18/47
ROT5/13/18/47 是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取。
ROT5 是 rotate by 5 places 的简写,意思是旋转 5 个位置,其它皆同。下面分别说说它们的编码方式:
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,具体可参考 ASCII 编码。
4、简单换位密码
简单换位密码(Simple Substitution Cipher)加密方式是以每个明文字母被与之唯一对应且不同的字母替换的方式实现的,它不同于恺撒密码,因为密码字母表的字母不是简单的移位,而是完全是混乱的。 比如:
明文字母 : abcdefghijklmnopqrstuvwxyz
明文字母 : phqgiumeaylnofdxjkrcvstzwb
明文:the quick brown fox jumps over the lazy dog
密文:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm
5、希尔密码
希尔密码(Hill Cipher)是基于线性代数多重代换密码,由 Lester S. Hill 在 1929 年发明。每个字母转换成 26 进制数字:A=0, B=1, C=2…Z=25 一串字母当成 n 维向量,跟一个 n×n的矩阵相乘,再将得出的结果 MOD26。
明文:ACT
明文对应矩阵:
加密密钥:GYBNQKURP
加密矩阵:
计算过程:
密文:FIN
(3)解密
密文:FIN
计算加密矩阵的逆矩阵:
解密计算:
明文:ACT
6、猪圈密码
猪圈密码(Pigpen Cipher 或称九宫格密码、朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码
在线解密网站
猪圈密码
变形
7、波利比奥斯方阵密码
波利比奥斯方阵密码(Polybius Square Cipher 或称波利比奥斯棋盘)是棋盘密码的一种,是利用波利比奥斯方阵进行加密的密码方式,简单的来说就是把字母排列好,用坐标(行列)的形式表现出来。字母是明文,密文便是字母的坐标。如F:12,L:13
8、夏多密码
夏多密码是作者麦克斯韦·格兰特在中篇小说《死亡之链》塑造夏多这一英雄人物中所自创的密码。
9、普莱菲尔密码
普莱菲尔密码(Playfair Cipher)是第一种用于实际的双字替换密码,用双字加密取代了简单代换密码的单字加密,很明显这样使得密文更难破译,因为使用简单替换密码的频率分析基本没有什么作用,虽然频率分析,通常仍然可以进行,但是有 25×25=625 种可能而不是 25 种可能编写分三步:1.编制密码表 2.整理明文 3.编写密文 构成部分:1.密钥 2.明文3.密文4.注明的某个字母代替的另一个字母编制密码表第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。同时字母I和J会被当成一个字母。
如密钥crazy dog,可编制成
整理明文
第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。
如,communist,应成为co,mx,mu,ni,st。
编写密文
最后编写密文。对明文加密规则如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。
如,依照上表,明文where there is life,there is hope.
可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX
然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY
将密文变成大写,然后几个字母一组排列。
如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY
解密
Playfair解密算法首先将密钥填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。
对密文解密规则如下:
1 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
2 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
3 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
另外PlayFair解密算法不能解决字母中连续出现’XX’的情况,但是在英语中很少有连续两个XX的字母,所以不太影响PlayFair算法的使用。
10、维吉尼亚密码
1508年时,约翰尼斯·特里特米乌斯《隐写术》中发明的表格法成为了维吉尼亚密码的关键部分。这一加密技术也称为特里特米乌斯密码。这一方法真正出现是在吉奥万·巴蒂斯塔·贝拉索于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的算术》中。他以特里特米乌斯的表格法为基础,同时引入了密钥的概念。布莱斯·德·维吉尼亚于1586年亨利三世时期发明了更为简单却又更有效的自动密钥密码(autokey cipher)。之后,19世纪时贝拉索的方法被误认为是由维吉尼亚首先发明的,所以被称为维吉尼亚密码。在凯撒密码中,每一个字母会有一定的偏移量变成另外一个字母,而维吉尼亚密码就是有多个偏移量不同的凯撒密码组成。维吉尼亚密码加密需要一个表格。表格是一个26*26的矩阵,每一行由26个英文字母组成,每一行由前一行向左偏移一位得到。加密时,明文字母作为列,对应的密钥字母作为行,所确定的坐标上的字母即为对应的密文字母,以此类推,循环使用密钥,得到密文。
参考链接
11、自动密钥密码
自动密钥密码(Autokey Cipher)是多表替换密码,与维吉尼亚密码密切相关,但使用不同的方法生成密钥,通常来说要比维吉尼亚密码更安全。自动密钥密码主要有两种,关键词自动密钥密码和原文自动密钥密码.下面我们以关键词自动密钥为例:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
关键词:CULTURE
自动生成密钥:CULTURE THE QUICK BROWN FOX JUMPS OVER THE
接下来的加密过程和维吉尼亚密码类似,从密表可得:
密文:VBP JOZGD IVEQV HYY AIICX CSNL FWW ZVDP WVK
12、博福特密码
博福特密码(Beaufort Cipher),是一种类似于维吉尼亚密码的代换密码,由弗朗西斯·蒲福(Francis Beaufort)发明。它最知名的应用是 Hagelin M-209 密码机。博福特密码属于对等加密,即加密演算法与解密演算法相同。
在线加解密
13、滚动密钥密码
滚动密钥密码(Running Key Cipher)和维吉尼亚密码有着相同的加密机制,区别是密钥的选取,维吉尼亚使用的密钥简短,而且重复循环使用,与之相反,滚动密钥密码使用很长的密钥,比如引用一本书作为密钥。这样做的目的是不重复循环使用密钥,使密文更难破译,尽管如此,滚动密钥密码还是可以被攻破,因为有关于密钥和明文的统计分析模式可供利用,如果滚动密钥密码使用统计上的随机密钥来源,那么理论上是不可破译的,因为任何可能都可以成为密钥,并且所有的可能性都是相等的。
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥:选取 C 语言编程(1978 版)第 63 页第 1 行"errors can occur in several places. A label has…",去掉非字母部分作为密钥(实际选取的密钥很长,长度至少不小于明文长度)。
加密过程:加密过程和维吉尼亚密码加密过程相同
密文:XYV ELAEK OFQYH WWK BYHTJ OGTC TJI DAK YESR
14、Porta 密码
Porta 密码(Porta Cipher)是一个由意大利那不勒斯的医生 Giovanni Battista della Porta发明的多表代换密码,Porta 密码具有加密解密过程的是相同的特点。
KEY | 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,B | 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
C,D | O P Q R S T U V W X Y Z N M A B C D E F G H I J K L
E,F | P Q R S T U V W X Y Z N O L M A B C D E F G H I J K
G,H | Q R S T U V W X Y Z N O P K L M A B C D E F G H I J
I,J | R S T U V W X Y Z N O P Q J K L M A B C D E F G H I
K,L | S T U V W X Y Z N O P Q R I J K L M A B C D E F G H
M,N | T U V W X Y Z N O P Q R S H I J K L M A B C D E F G
O,P | U V W X Y Z N O P Q R S T G H I J K L M A B C D E F
Q,R | V W X Y Z N O P Q R S T U F G H I J K L M A B C D E
S,T | W X Y Z N O P Q R S T U V E F G H I J K L M A B C D
U,V | X Y Z N O P Q R S T U V W D E F G H I J K L M A B C
W,X | Y Z N O P Q R S T U V W X C D E F G H I J K L M A B
Y,Z | Z N O P Q R S T U V W X Y B C D E F G H I J K L M A
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:明文字母’T’列与密钥字母’C’行交点就是密文字母’F’,以此类推。
密文:FRW HKQRY YMFMF UAA OLWHD ALWI JPT ZXHC NGV
在线加解密
15、同音替换密码
同音替换密码(Homophonic Substitution Cipher)是单字母可以被其他几种密文字母同时替换的密码,通常要比标准替换密码破解更加困难,破解标准替换密码最简单的方法就是分析字母出现频率,通常在英语中字母’E’(或’T’)出现的频率是最高的,如果我们允许字母’E’可以同时被 3 种不同字符代替,那么就不能还是以普通字母的频率来分析破解,如果允许可代替字符越多,那么密文就会更难破译。
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密文(其中一种):6CZ KOVST XJ0MA EQY IOGL4 0W1J UC7 P9NB F0H
16、仿射密码
仿射密码(Affine Cipher)是一种单表代换密码,字母表中的每个字母相应的值使用一个简单的数学函数映射到对应的数值,再把对应数值转换成字母。这个公式意味着每个字母加密都会返回一个相同的字母,意义着这种加密方式本质上是一种标准替代密码。因此,它具有所有替代密码的弱点。每一个字母都是通过函数(ax + b)mod m 加密,其中 B 是位移量,为了保证仿射密码的可逆性,a 和 m 需要满足 gcd(a , m)=1,一般 m 为设置为 26。
常见字母对应关系
加解密原理
17、培根密码
培根密码(Baconian Cipher)是一种替换密码,每个明文字母被一个由 5 字符组成的序列替换,最初的加密方式就是由’A’和’B’组成序列替换明文(所以你当然也可以用别的字母),比如字母’D’替换成"aaabb",以下是一种对应关系(另一种对应关系是每个字母都有唯一对应序列,I和 J 与 U/V 各自都有不同对应序列)
在线加解密
18、ADFGX和ADFGVX密码
ADFGX 密码(ADFGX Cipher)是结合了改良过的 Polybius 方格替代密码与单行换位密码的矩阵加密密码,使用了 5 个合理的密文字母A,D,F,G,X,这些字母之所以这样选择是因为当转译成摩尔斯电码(ADFGX 密码是德国军队在一战发明使用的密码)不易混淆,目的是尽可能减少转译过程的操作错误。
A D F G X
A | p h q g m
D | e a y n o
F | f d x k r
G | c v s z w
X | b u t i/j l
明文:THE QUICK BROWN FOX
结果矩阵加密:
XF AD DA
AF XD XG GA FG
XA FX DX GX DG
FA DX FF
ADFGVX 密码
ADFGVX 密码实际上就是 ADFGX 密码的扩充升级版,一样具有 ADFGX 密码相同的特点,加密过程也类似,不同的是密文字母增加了 V,使得可以再使用 数字来替换明文。
A D F G V X
A | p h 0 q g 6
D | 4 m e a 1 y
F | l 2 n o f d
G | x k r 3 c v
V | s 5 z w 7 b
X | j 9 u t i 8
19、双密码
双密码(Bifid Cipher)结合了波利比奥斯方阵换位密码,并采用分级实现扩散,这里的“双”是指用 2 个密钥进行加密。双密码是由法国 Felix Delastelle 发明,除此之外 Felix Delastelle还发明了三分密码(Trifid Cipher),四方密码(Four-Square Cipher)。还有一个两方密码(Two-Square)与四方密码类似,共轭矩阵双密码(Conjugated Matrix Bifid Cipher)也是双密码的变种。
1 2 3 4 5
1| p h q g m
2| e a y l n
3| o f d x k
4| r c v s z
5| w b u t i/j
明文:THE QUICK BROWN FOX
经过密阵转换:
行:512 15543 54352 333
列:421 33525 21115 214
分组:
51215 54354 35233 3
42133 52521 11521 4
合并:
5121542133 5435452521 3523311521 34
在经过密阵转换后密文:WETED TKZNE KYOME X
20、三分密码
三分密码(Trifid Cipher)结合换位和替换,三分密码与双密码非常相似,不同之处就是用3×3×3 的密阵代替 5×5 密阵。
方阵 1 方阵 2 方阵 3
1 2 3 1 2 3 1 2 3
1 E P S 1 M . Z 1 F G O
2 D U C 2 L K X 2 R I J
3 V W Y 3 N B T 3 H A Q
明文:THE QUICK BROWN FOX
经过密阵转换:
T H E Q U I C K B R O W N F O X .
2 3 1 3 1 3 1 2 2 3 3 1 2 3 3 2 2
3 3 1 3 2 2 2 2 3 2 1 3 3 1 1 2 1
3 1 1 3 2 2 3 2 2 1 3 2 1 1 3 3 2
T(233)表示 T 在第二个方阵第三行第三列的位置
分组(分组密钥以 5 为例):
T H E Q U I C K B R O W N F O X .
2 3 1 3 1 3 1 2 2 3 3 1 2 3 3 2 2
3 3 1 3 2 2 2 2 3 2 1 3 3 1 1 2 1
3 1 1 3 2 2 3 2 2 1 3 2 1 1 3 3 2
合并:
23131 33132 31132 31223 22232 23221 31233 13311 32113 22 21 32
在经过密阵转换后密文:
231313313231132312232223223221312331331132113222132
NOONWGBXXLGHHWSKW
21、四方密码
四方密码(Four-Square Cipher)是类似普莱菲尔密码双字母加密密码,这样使加密效果强于其他替换密码,因为频率分析变得更加困难了。四方密码使用 4 个预先设置的 5×5 字母矩阵,每个矩阵包括 25 个字母,通常字母’j’被融入到’i’中(维基百科上说’q’被忽略,不过这不重要,因为’q’和’j’都是很少出现的字母),通常左上和右下矩阵式是标准字母排序明文矩阵,右上和左下矩阵是打乱顺序的密钥矩阵。
首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。
将这两个加密矩阵放在右上角和左下角,余下的两个角放a到z顺序的矩阵
加密的步骤:
两个字母一组地分开讯息:(例如hello world变成he ll ow or ld);
找出第一个字母在左上角矩阵的位置;
同样道理,找第二个字母在右下角矩阵的位置;
找右上角矩阵中,和第一个字母同行,第二个字母同列的字母;
找左下角矩阵中,和第一个字母同列,第二个字母同行的字母;
得到的这两个字母就是加密过的讯息。
he lp me ob iw an ke no bi的加密结果:FY NF NE HW BX AF FO KH MD
22、棋盘密码
棋盘密码是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,产生于公元前两世纪的希腊,相传是世界上最早的一种密码。
假设我们需要发送明文讯息 “Attack”, 用一套秘密混杂的字母表填满波利比奥斯方阵,像是这样:
加密时按行列找到a加密为AF,t加密为AD,依此类推。解密时进行反查即可,如AF找到A行F列对应为a。
明文:A T T A C K
密文:AF AD AD AF GF DX
因为棋盘是5*5格,共25格,所以把i和j放在同一格加密为相同密文。解密时要根据语义进行辨别是i还是j。
棋盘的行列密文也可以用数字1,2,3,4,5来代替,得到波利比奥斯方阵,像是这样:
这样加密的话Attack的密文就是:
密文:11 44 44 11 13 25
23、跨棋盘密码
跨棋盘密码(Straddle Checkerboard Cipher)是一种替换密码,当这种密码在结合其他加密方式,加密效果会更好。
棋盘示例(选择3和7作为变换):
0 1 2 3 4 5 6 7 8 9
f k m c p d y e
3: h b i g q r o s a z
7: l u t j n w v x
明文: T H E Q U I C K B R O W N F O X
经过加密棋盘替换得到密文: 72 30 9 34 71 32 4 1 31 35 36 75 74 0 36 77
24、分组摩尔斯替换密码
分组摩尔斯替换密码(Fractionated Morse Cipher)首先把明文转换为莫尔斯电码,不过每个字母之间用x
分开,每个单词用xx
分开。然后使用密钥生成一个替换密表,这个密表包含所有. - x
组合的情况(因为不会出现xxx
的情况,所以一共 26 种组合)。
密钥:MORSECODE
密表
M O R S E C D A B F G H I J K L N P Q T U V W X Y Z
. . . . . . . . . - - - - - - - - - X X X X X X X X
. . . - - - X X X . . . - - - X X X . . . - - - X X
. - X . - X . - X . - X . - X . - X . - X . - X . -
说明:密表下半部分是固定的,密表的安全性以及加密效果主要取决于使用的密钥。
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
(类似)摩尔斯电码:
-x…x.xx–.-x…-x…x-.-.x-.-xx-…x.-.x—x.–x-.xx…-.x—x-…-xx.—x…- –
x.–.x…xx—x…-x.x.-.xx-x…x.xx.-…x.-x–…x-.–xx-…x—x–.
说明:明文在转换为(类似)摩尔斯电码后进行每 3 个字符分组,再进行密表的查表。
密文(经过密表替换):LMUWC OQVHG ZMTAK EVYSW NOYJQ NLIQB JQCDH XMDYF TWRGP FWNH
在线加解密
25、Bazeries 密码
Bazeries 密码(Bazeries Cipher)是换位密码和替换密码的组合,使用两个波利比奥斯方阵,一个明文字母方阵,使用一个随机的数字(一般小于1000000)的生成一个密钥矩阵同时作为第一轮明文划分分组,比如 2333 这个数字翻译为英文便是 TWO THOUSAND THREE HUNDRED THIRTY THREE,从第一个字母 T 开始选取不重复的字母,之后再从字母表中按序选取没有出现的字母组成密钥矩阵。
26、Digrafid 密码
Digrafid 密码(Digrafid Cipher)使用两个密钥生成分别生成类似波利比奥斯方阵的 3x9 方格的密表。主要有 3 分组和 4 分组两类。
第一个方阵密钥:digrafid
第二个方阵密钥:cipher
27、格朗普雷密码
格朗普雷密码(Grandpré Cipher)是替换密码的一种,一般使用 8 个 8 字母的单词横向填充8x8 方阵,且第一列为一个单词,并且在方阵中 26 个字母都必须出现一次以上。
明文: T H E Q U I C K B R O W N F O
密文: 84 27 82 41 51 66 31 36 15 71 67 73 52 34 67
说明:明文中的字母在密阵位置可能不止一个,所以加密结果可能有多种,但是不影响解密。密阵还有 6x6,7x7,9x9,10x10 几种。显然密阵越大每个字母被替换的情况就可能越多,那么加密效果就更好。
28、比尔密码
比尔密码(Beale ciphers)有三份密码,当然这里说的是已被破解第二份,是一种类似书密码的替换密码。
以第二密码为例,每一个数字代表美国《独立宣言》的文本中的第几个词的首字母,如 1 代表第 1 个词的首字母“w”,2 代表第 2 个词首字母“i”。
29、键盘密码
一般用到的键盘密码就是手机键盘和电脑键盘两种,2014 0ctf 比赛里 Crypto 类型中Classic 一题就是电脑键盘密码。
原文参考连接
30、恩尼格玛密码机
恩尼格玛密码机(德语:Enigma,又译哑谜机,或“谜”式密码机)是一种用于加密与解密文件的密码机。确切地说,恩尼格玛是对二战时期纳粹德国使用的一系列相似的转子机械加解密机器的统称,它包括了许多不同的型号,为密码学对称加密算法的流加密。详细工作原理参考百度百科
其他奇怪的密码
1、与佛论禅
与佛论禅
加密:
解密:
注意解密的时候要加上:“佛曰:”
2、新约佛论禅
3、核心价值观编码
4、jjencode与aaencode解密
5、兔子密码
5、Brainfuck/Ook!密码
6、当铺密码
当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。例如:
王:该字外面有 6 个出头的位置,所以该汉字对应的数字就是 6;
口:该字外面没有出头的位置,那就是0;
人:该字外面有 3 个出头的位置,所以该汉字对应的数字就是 3;
以此类推 …
下面是一段由当铺密码组成的字符:
密文:王夫 井工 夫口 由中人 井中 夫夫 由中大
对应:67 84 70 123 82 77 125
翻译成 ASCII码: CTF{RM}
7、黄道十二宫
详情参考:
黄道十二宫杀手密码
8、跳舞的小人
这种密码出自于福尔摩斯探案集。每一个跳舞的小人实际上对应的是英文二十六个字母中的一个,而小人手中的旗子则表明该字母是单词的最后一个字母,如果仅仅是一个单词而不是句子,或者是句子中最后的一个单词,则单词中最后一个字母不必举旗。
9、标准银河字母
标准银河字母(Standard Galactic Alphabet)出自游戏《指挥官基恩》系列。是系列中使用的书写系统。这是一个简单的替代暗号,用不同的符号取代拉丁字母。
10、中文电码
中文电码,又称标准中文电码、中文商用电码、中文电报码或中文电报明码原本是于电报之中传送中文信息的方法,它是第一个把汉字化作电子讯号的编码表。
中文电码查询
参考博客文章:
常见的加密类型
CTF 中那些脑洞大开的编码和加密.pdf