目录

0x00 前言

0x01 目录

0x02 正文

常见编码

1.ASCII编码

2.Base64/32/16编码

3.shellcode编码

4.Quoted-printable 编码

5.XXencode编码

6.UUencode编码

7.URL编码

8.Unicode编码

9.Escape/Unescape编码

10.HTML实体编码

11.敲击码

12.莫尔斯电码

13.编码的故事

各种文本加密

换位加密

1.栅栏密码

2.曲路密码

3.列移位密码

替换加密

1.埃特巴什码

2.凯撒密码

3.ROT5/13/18/47

4.简单替换密码

5.希尔密码

7.波利比奥斯方阵密码

8.夏多密码(曲折加密)

9.普莱菲尔密码

10.维吉尼亚密码

11.自动密钥密码

12.博福特密码

13.滚动密钥密码

14.Porta密码

15.同音替换密码

16.仿射密码

17.培根密码

18.ADFGX和ADFGVX密码

19.双密码

20.三分密码

21.四方密码

22.棋盘密码

23.跨棋盘密码

24.分组摩尔斯替换密码

25.Bazeries密码

26.Digrafid密码

27.格朗普雷密码

28.比尔密码

29.键盘密码

其他有趣的机械密码

1.恩尼格玛密码

代码混淆加密

1. asp混淆加密

2.[php language="混淆加密"][/php][/php] 118

3.[css language="/js混淆加密"][/css][/css] 119

4. VBScript.Encode混淆加密

5.ppencode

6.rrencode

7.jjencode/aaencode

8.JSfuck

9.jother

10.brainfuck

相关工具

参考网站


0x00 前言


正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进行一些处理,但是会给留一些线索,所以写此文的目的是想给小伙伴做题时给一些参考,当然常在CTF里出现的编码也可以了解一下。本来是想尽快写出参考的文章,无奈期间被各种事情耽搁导致文章断断续续写了2个月,文章肯定有许多没有提及到,欢迎小伙伴补充,总之,希望对小伙伴们有帮助吧!最后欢迎小伙伴来 博客 玩耍:P

0x01 目录


  1. 常见编码:

    1. ASCII编码
    2. Base64/32/16编码
    3. shellcode编码
    4. Quoted-printable编码
    5. XXencode编码
    6. UUencode编码
    7. URL编码
    8. Unicode编码
    9. Escape/Unescape编码
    10. HTML实体编码
    11. 敲击码(Tap code)
    12. 莫尔斯电码(Morse Code)
    13. 编码的故事
  2. 各种文本加密

  3. 换位加密:

    1. 栅栏密码(Rail-fence Cipher)
    2. 曲路密码(Curve Cipher)
    3. 列移位密码(Columnar Transposition Cipher)
  4. 替换加密:

    1. 埃特巴什码(Atbash Cipher)
    2. 凯撒密码(Caesar Cipher)
    3. ROT5/13/18/47
    4. 简单换位密码(Simple Substitution Cipher)
    5. 希尔密码(Hill Cipher)
    6. 猪圈密码(Pigpen Cipher)
    7. 波利比奥斯方阵密码(Polybius Square Cipher)
    8. 夏多密码(曲折加密)
    9. 普莱菲尔密码(Playfair Cipher)
    10. 维吉尼亚密码(Vigenère Cipher)
    11. 自动密钥密码(Autokey Cipher)
    12. 博福特密码(Beaufort Cipher)
    13. 滚动密钥密码(Running Key Cipher)
    14. Porta密码(Porta Cipher)
    15. 同音替换密码(Homophonic Substitution Cipher)
    16. 仿射密码(Affine Cipher)
    17. 培根密码(Baconian Cipher)
    18. ADFGX和ADFGVX密码(ADFG/VX Cipher)
    19. 双密码(Bifid Cipher)
    20. 三分密码(Trifid Cipher)
    21. 四方密码(Four-Square Cipher)
    22. 棋盘密码(Checkerboard Cipher)
    23. 跨棋盘密码(Straddle Checkerboard Cipher)
    24. 分组摩尔斯替换密码(Fractionated Morse Cipher)
    25. Bazeries密码(Bazeries Cipher)
    26. Digrafid密码(Digrafid Cipher)
    27. 格朗普雷密码(Grandpré Cipher)
    28. 比尔密码(Beale ciphers)
    29. 键盘密码(Keyboard Cipher)
  5. 其他有趣的机械密码:

    1. 恩尼格玛密码
  6. 代码混淆加密:

    1. asp混淆加密
    2. php混淆加密
    3. css/js混淆加密
    4. VBScript.Encode混淆加密
    5. ppencode
    6. rrencode
    7. jjencode/aaencode
    8. JSfuck
    9. jother
    10. brainfuck编程语言
  7. 相关工具

  8. 参考网站

0x02 正文


常见编码

1.ASCII编码

ASCII编码大致可以分作三部分组成:

第一部分是:ASCII非打印控制字符(参详ASCII码表中0-31);

第二部分是:ASCII打印字符,也就是CTF中常用到的转换;

第三部分是:扩展ASCII打印字符(第一第三部分详见 ASCII码表 解释)。

编码转换示例

源文本: The quick brown fox jumps over the lazy dog

ASCII编码对应十进制:

 101 32 113 117 105 99 107 32 98 114 111 119 110 32 102 111 120 32 106 117 109 112 115 32 111 118 101 114 32 116 104 101 32 108 97 122 121 32 100 111 103

对应可以转换成二进制,八进制,十六进制等。

2.Base64/32/16编码

base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码,这里我注重介绍base64。Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME,在XML中存储复杂数据。

编码原理:Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(A-Z,a-z,0-9,+,/这64个编码字符,=号不属于编码字符,而是填充字符)的原因,这样就需要一张映射表,如下:

举个例子(base64):

源文本:T h e

对应ascii码:84 104 101

8位binary:01010100 01101000 01100101

6位binary:010101 000110 100001 100101

高位补0:000010101 00000110 00100001 00100101

对应ascii码:21 6 33 37

查表:V G h l

利用Python base64模块,我们分别可以这样加密解密base64 32 16:

 

3.shellcode编码

源文本: The quick brown fox jumps over the lazy dog

编码后:

\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67

 

4.Quoted-printable 编码

它是多用途互联网邮件扩展(MIME) 一种实现方式。有时候我们可以邮件头里面能够看到这样的编码,编码原理 参考 。

 

源文本: 敏捷的棕色狐狸跳过了懒惰的狗

编码后:

=E6=95=8F=E6=8D=B7=E7=9A=84=E6=A3=95=E8=89=B2=E7=8B=90=E7=8B=B8=E8=B7=B3=E8
=BF=87=E4=BA=86=E6=87=92=E6=83=B0=E7=9A=84=E7=8B=97

编码解码 链接

5.XXencode编码

XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。以所对应值的位置字符代替。它所选择的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符。跟base64打印字符相比,就是UUencode多一个“-” 字符,少一个”/” 字符。

源文本: The quick brown fox jumps over the lazy dog

编码后: hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNkc+

编码解码 链接

6.UUencode编码

UUencode是一种二进制到文字的编码,最早在unix 邮件系统中使用,全称:Unix-to-Unix encoding,UUencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。然后将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中。

源文本: The quick brown fox jumps over the lazy dog

编码后: M5&AE('%U:6-K(&)R;W=N(&9O>"!J=6UP<R!O=F5R('1H92!L87IY(&1O9PH*

编码解码 链接

7.URL编码

url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是'20',那么urlencode编码结果是:%20。

源文本: The quick brown fox jumps over the lazy dog

编码后:

%54%68%65%20%71%75%69%63%6b%20%62%72%6f%77%6e%20%66%6f%78%20%6a%75%6d%70%73%20%6f%76%65%72%20%74%68%65%20%6c%61%7a%79%20%64%6f%67

编码解码 链接

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

编码解码 链接

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实体编码

完整编码手册 参考

11.敲击码

敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。

敲击码表:

  3  4  5A  B C/K D  EF  G  H  I  J L  M  N  O  PQ  R  S  T  UV  W  X  Y  Z

 

12.莫尔斯电码

摩尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成:

  1. 点(.)
  2. 划(-)
  3. 每个字符间短的停顿(通常用空格表示停顿)
  4. 每个词之间中等的停顿(通常用 划分)
  5. 以及句子之间长的停顿

摩尔斯电码字母和数字对应表:

A  .-    N  -.    .  .-.-.-  +  .-.-.    1  .----
B  -...  O  ---   ,  --..--  _  ..--.-   2  ..---
C  -.-.  P  .--.  :  ---...  $  ...-..-  3  ...--
D  -..   Q  --.-  "  .-..-.  &  .-...    4  ....-
E  .     R  .-.   '  .----.  /  -..-.    5  .....
F  ..-.  S  ...   !  -.-.--              6  -....
G  --.   T  -     ?  ..--..              7  --...
H  ....  U  ..-   @  .--.-.              8  ---..
I  ..    V  ...-  -  -....-              9  ----.
J  .---  W  .--   ;  -.-.-.              0  -----
K  -.-   X  -..-  (  -.--.           
L  .-..  Y  -.--  )  -.--.-          
M  --    Z  --..  =  -...-                          

源文本: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

编码后:

- .... . / --.- ..- .. -.-. -.- / -... .-. --- .-- -. / ..-. --- -..- / .--- ..- -- .--. ... / --- ...- . .-. / - .... . / .-.. .- --.. -.-- / -.. --- --.

在线编码解码 传送门

摩尔斯电码除了能对字母数字编码以外还对一些标点符号,非英语字符进行了编码,而且还有一些特定意义的组合称为特殊符号,比如 ·-·-·-·-·- 表达的意思是调用信号,表示“我有消息发送”。如果你感兴趣可以参考 WiKi 。

13.编码的故事

推荐大家去看 编码的故事 一文。

各种文本加密

文本加密可以将正常文本内容打乱为不可连读的文字或符号(汉字 数字 字母 音乐符号 国际音标 盲文 韩文 日文 傣文 彝文 箭头符号 花朵符号 俄文),换行等格式信息也会被清除,达到加密的作用。在进行文本加密时可以设定一个密码,这样只有知道密码的人才能解密文本。密码可以是数字、字母和下划线,最多九位。

加密示例:

源文本: 敏捷的棕色狐狸跳过了懒惰的狗

编码解码 链接

换位加密

1.栅栏密码

(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.列移位密码

(1)介绍

列移位密码(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列,以此类推写出的结果便是密文:

密文: qoury inpho Tkool hbxva uwmtd cfseg erjez

这里提供一个行列数相等的填充规则列移位密码加解密 链接

另外由列移位密码变化来的密码也有其他的,比如 Amsco密码 (Amsco Cipher)和 Cadenus密码 (Cadenus Cipher)。

替换加密

1.埃特巴什码

(1)介绍

埃特巴什码(Atbash Cipher)是一种以字母倒序排列作为特殊密钥的替换加密,也就是下面的对应关系:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA

明文: the quick brown fox jumps over the lazy dog

密文: gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt

加解密 传送门

2.凯撒密码

(1)介绍

凯撒密码(Caesar Cipher或称恺撒加密、恺撒变换、变换加密、位移加密)是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推,更多 参考 。

加密实例:

明文: The quick brown fox jumps over the lazy dog

偏移量:1

密文: Uif rvjdl cspxo gpy kvnqt pwfs uif mbaz eph

 

你也可以使用Python的pycipher模块来加解密,如果提示没有这个模块可以通过 pip install pycipher 或者其他方式来安装pycipher模块。

>>> from pycipher import Caesar
>>> Caesar(key=1).encipher('The quick brown fox jumps over the lazy dog')
'UIFRVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH'
>>> Caesar(key=1).decipher('UIFRVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

参考表(这里是向后移位加密,向前移位解密):

加密解密 链接 (这个网站可以将26种情况一次性列举出来,比较方便)

3.ROT5/13/18/47

(1)介绍

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编码,下面以rot13以例。

明文: the quick brown fox jumps over the lazy dog

密文: gur dhvpx oebja sbk whzcf bire gur ynml qbt

传送门

4.简单替换密码

(1)介绍

简单换位密码(Simple Substitution Cipher)加密方式是以每个明文字母被与之唯一对应且不同的字母替换的方式实现的,它不同于恺撒密码,因为密码字母表的字母不是简单的移位,而是完全是混乱的。 比如:

明文字母 : abcdefghijklmnopqrstuvwxyz
明文字母 : phqgiumeaylnofdxjkrcvstzwb

明文: the quick brown fox jumps over the lazy dog

密文: cei jvaql hkdtf udz yvoxr dsik cei npbw gdm

(2)破解

当密文数据足够多时这种密码我们可以通过字频分析方法破解或其他方法破解,比较好的在线词频分析网站 http://quipqiup.com/index.php (翻= =墙),这里推荐一篇通过"爬山算法"来破解简单替换密码 文章 ,基于文中的算法实现的工具来破解示例。

密文:

pmpafxaikkitprdsikcplifhwceigixkirradfeirdgkipgigudkcekiigpwrpucikceiginasikwduearrxiiqepcceindgmieinpwdfprduppcedoikiqiasafmfddfipfgmdafmfdteiki

解密:

(ps:score值越小越准确)

密钥: PHQGIUMEAVLNOFDXBKRCZSTJWY

明文:

AGAINPIERREWASOVERTAKENBYTHEDEPRESSIONHESODREADEDFORTHREEDAYSAFTERTHEDELIVERYOFHISSPEECHATTHELODGEHELAYONASOFAATHOMERECEIVINGNOONEANDGOINGNOWHERE

将明文转换成可读句子:

again pierre was over taken by the depression he so dreaded for three day safter the delivery of his speech at the lodge he lay on a sofa at home receiving no one and going no where

5.希尔密码

(1)介绍

希尔密码(Hill Cipher)是基于线性代数多重代换密码,由Lester S. Hill在1929年发明。每个字母转换成26进制数字:A=0, B=1, C=2...Z=25一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26。更多 参考

(2)加密

明文: ACT

明文对应矩阵:

加密密钥: GYBNQKURP

加密矩阵:

计算过程:

密文: FIN

(3)解密

密文: FIN

计算加密矩阵的逆矩阵:

解密计算:

明文: ACT

至于证明和求逆可以参考线性代数知识。

(4)破解

密码分析一门破解编码和密码的艺术。当我们尝试去攻破希尔密码你会发现频率分析实际上没有什么用处,特别在密钥长度增多的情况下。对于较长的二元矩阵(2×2的希尔密码)频率分析可能可能会有帮助,但是对于较短的密文分析是没有实际作用的。

这里推荐一篇关于用 已知明文样本攻击的方式破解希尔密码 的文章,基础的希尔密码用 已知明文攻击 的方式是可攻破的,由于加密完全是线性的,所以攻击者在截取到部分明文/密文字符对可以轻松建立一个线性系统,轻松搞定希尔密码,如果不能完全确定线性系统,那么只需要添加部分明文/密文对即可。已知明文攻击时最好的方式去破解写入密码,如果明文一无所知,那就进行推测猜出部分明文。基于已知明文样本攻击的方式破解希尔密码的算法的实现工具破解示例:

密文:

XUKEXWSLZJUAXUNKIGWFSOZRAWURORKXAOSLHROBXBTKCMUWDVPTFBLMKEFVWMUXTVTWUIDDJVZKBRMCWOIWYDXMLUFPVSHAGSVWUFWORCWUIDUJCNVTTBERTUNOJUZHVTWKORSVRZSVVFSQXOCMUWPYTRLGBMCYPOJCLRIYTVFCCMUWUFPOXCNMCIWMSKPXEDLYIQKDJWIWCJUMVRCJUMVRKXWURKPSEEIWZVXULEIOETOOFWKBIUXPXUGOWLFPWUSCH

解密:

解密 脚本实例

在线加解密 传送门

6.猪圈密码

(1)介绍

猪圈密码(Pigpen Cipher或称九宫格密码、朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。更多 参考

明文字母和对应密文:

 

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密文:

在线加密 传送门

(2)变种

圣堂武士密码(Templar Cipher)是共济会的“猪圈密码”的一个变种,一直被共济会圣殿骑士用。

明文字母和对应密文:

(3)其他变种

明文字母和对应密文:

明文字母和对应密文:

明文字母和对应密文:

7.波利比奥斯方阵密码

(1)介绍

波利比奥斯方阵密码(Polybius Square Cipher或称波利比奥斯棋盘)是棋盘密码的一种,是利用波利比奥斯方阵进行加密的密码方式,简单的来说就是把字母排列好,用坐标(行列)的形式表现出来。字母是密文,明文便是字母的坐标。更多 参考

常见的排布方式:

加密实例:

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密文: 442315 4145241325 1242345233 213453 2445323543 442315 31115554 143422

8.夏多密码(曲折加密)

(1)介绍

夏多密码是作者麦克斯韦·格兰特在中篇小说《死亡之链》塑造夏多这一英雄人物中所自创的密码,如下图所示:

 

注意,在以上所示的字母表密钥的底部,列有四个附加符号1,2,3,4.他们可以放在密文中的任何地方。每个附加符号指示,如何转动写有密文的纸张,再进行后续的加密或解密操作,直到出现另一个附加符号。可以把每个附加符号中的那根线看作是指示针,它指示了纸张的上端朝上,朝右,朝下,朝左。比如说:如果出现符号3,那么纸张就应该转动180度,使其上端朝下; 符号2表示纸张上端朝右,依次类推。

源文本: I AM IN DANGER SEND HELP(我有危险,速来增援)

密文:

9.普莱菲尔密码

普莱菲尔密码(Playfair Cipher)是第一种用于实际的双字替换密码,用双字加密取代了简单代换密码的单字加密,很明显这样使得密文更难破译,因为使用简单替换密码的频率分析基本没有什么作用,虽然频率分析,通常仍然可以进行,但是有25×25=625种可能而不是25种可能,可以分为三个步骤,即编制密码表、整理明文、编写译文,下面我们以明文:
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 和密钥 CULTURE 为例来讲解。普莱菲尔密码又称为单方密码(Single Cipher)之后又出现它的升级版Double Playfair,也就是 二方密码 (Two-square Cipher),在之后又有四方密码(Four-square Cipher)

(1)编制密码表

1.整理密钥字母 C U L T U R E ,去掉后面重复的字母得到: C U L T R E

2.用上一步得到的字母自上而下来填补5乘5方表的纵列(也可横排),之后的空白按照相同的顺序用字母表中剩余的字母依次填补完整,得到如下的方格:

这一步需要注意的要点:整理密钥字母时,如果出现"Z",则需要去除,因为在英文里"Z"的使用频率最低,相应的如果是德文,则需将"I"与"J"当作一个字母来看待,而法语则去掉"W"或"K"。

(2)整理明文

我们要遵循的原则是“两个一组”,得到是若干个两两成对的字母段,用到的是明文 THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 与字母" ":

1.将明文两两一组按顺序排开,得到: TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO G

2.对于末尾的单个字母要加上一个" "使之成对: TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX

这一步需要注意的要点:对于相连字母相同者,每个后面都需要加" ",例如 TOMORROW ,需要写成: TO MO RX RX OW 

(3)编写密文

我们要得到的密文,当然,对于每个字母对,要严格遵循如下的原则:

1.如果两个字母在同一行则要用它右邻的字母替换,如果已在最右边,则用该行最左边的替换,如明文为" CE ",依据上表,应替换为" EG ";

2.如果两个字母在同一列则要用它下边的字母替换,如果已在最下边,则用该行最上边的替换,如明文为" OQ ",依据上表,应替换为" PS ";

3.如果两个字母在不同的行或列,则应在密码表中找两个字母使四个字母组成一个矩形,明文占据两个顶点,需用另外两个顶点的字母替换,如明文为" HX ",可以替换为" WI/J "或" I/JW "(下面的例子将按照横向替换原则即同行优先)。

按照上述原则,将明文 TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX 加以转换得到 KU ND LH GT LF WU ES PW LH SI/J NP CG CR AG BU VZ QA I/JV (/表示或者,不过一般用I不用J,所以分析密文时你看25个字母都有而只差一个字母没有用到可以考虑一下这种加密方式)将得到的字母改为大写并五个一组列好,得到密文 KUNDL HGTLF WUESP WLHSI NPCGC RAGBU VZQAI V 

加密解密 传送门 (ps:这里加解密是横向编制密码表)

加密解密实例(ps:这里加解密也是横向编制密码表):

>>>from pycipher import Playfair
>>>Playfair('CULTREABDFGHIKMNOPQSVWXYZ').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV'
>>>Playfair('CULTREABDFGHIKMNOPQSVWXYZ').decipher('UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV')
'THEQUICKBROWNFOXIUMPSOVERTHELAZYDOGX'

10.维吉尼亚密码

(1)介绍

维吉尼亚密码(Vigenère Cipher)是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时可以循环使用)来决定用哪一行的密表来进行替换,以此来对抗字频统计,更多 参考 。

密表:

 

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密钥(循环使用,密钥越长相对破解难度越大): CULTURE

加密过程:如果第一行为明文字母,第一列为密钥字母,那么明文字母'T'列和密钥字母'C'行的交点就是密文字母'V',以此类推。

密文: VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK

(2)已知密钥加解密

>>>from pycipher import Vigenere
>>>Vigenere('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK'
>>>Vigenere('CULTURE').decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

在线加密解密 传送门

(3)未知密钥破解

可以参考 维吉尼亚密码分析 这篇文章,破解维吉尼亚密码第一步是确定密钥长度,维吉尼亚密码分析这篇文章里介绍了使用 重合指数 算法来确定密钥长度,在确定密钥长度后就可以尝试确定密钥,通常我们可以使用 卡方检验 来找到每个字母的偏移量,基于维吉尼亚密码分析一文中的算法实现的工具破解示例。

密文: kiqpbkxspshwehospzqhoinlgapp

解密:

(ps:结合左边的值,密钥以及解出明文可以确定kien 5或者klen 10为准确的结果)

明文: DEFEND THE EAST WALL OF THE CASTLE

(4)变种

有几种密码和维吉尼亚密码相似,格罗斯费尔德密码(Gronsfeld cipher)实际上和维吉尼亚密码相同,除了使用了数字来代替字母以外没有什么区别。数字可以选择一种数列,如斐波那契数列,或者一些其他的伪随机序列。格罗斯费尔德密码密码分析过程和维吉尼亚密码大同小异,不过,自动密钥密码不能使用 卡西斯基算法 (kasiski)来破译,因为自动密钥密码的密钥不重复循环使用,破译自动密钥密码最好的方法的就是从密文不断尝试和猜测其中明文或密钥的一部分。

>>>from pycipher import Gronsfeld
>>>Gronsfeld([2,20,11,45,20,43,4]).encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK'
>>>Gronsfeld([2,20,11,45,20,43,4]).decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

在线加解密 传送门

11.自动密钥密码

(1)介绍

自动密钥密码(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

(2)已知关键词加解密

>>>from pycipher import Autokey
>>>Autokey('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK'
>>>Autokey('CULTURE').decipher('VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

在线加解密 传送门

(3)未知关键词破解

推荐去看这篇 自动密钥密码分析文章 ,基于文中的算法实现的工具来破解示例。

密文:

isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl

解密

 

(ps:从klen 13可以看出使用的关键词为'FORTIFICATION')

明文:

DESPITEBEINGMORESECURETHANTHEVIGENERECIPHERTHEAUTOKEYCIPHERISSTILLVERYEASYTOBREAKUSINGAUTOMATEDMETHODS

将明文转换成可读句子:

despite being more secure than the vigenere cipher the autokey cipher is still very easy to break using automated methods

12.博福特密码

(1)介绍

博福特密码(Beaufort Cipher),是一种类似于维吉尼亚密码的代换密码,由弗朗西斯·蒲福(Francis Beaufort)发明。它最知名的应用是Hagelin M-209密码机。博福特密码属于对等加密,即加密演算法与解密演算法相同。

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

密钥(循环使用,密钥越长相对破解难度越大): CULTURE

加密过程:如果第一行为明文字母,第一列为密文字母,那么沿明文字母'T'列出现密钥字母'C'的行号就是密文字母'J',以此类推。

密文: JNH DAJCS TUFYE ZOX CZICM OZHC BKA RUMV RDY

(2)已知密钥加解密

>>>from pycipher import Beaufort
>>>Beaufort('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY'
>>>Beaufort('CULTURE').decipher('JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

在线加解密 传送门

13.滚动密钥密码

(1)介绍

滚动密钥密码(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密码

(1)介绍

Porta密码(Porta Cipher)是一个由意大利那不勒斯的医生Giovanni Battista della Porta发明的多表代换密码,Porta密码具有加密解密过程的是相同的特点。

密表:

KEYS| 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

已知密钥在线加解密 传送门

(2)破解

Porta密码可以被以 维吉尼亚密码 破解相类似方式进行自动攻破,破解Porta密码第一步是先确定密钥长度,这里推荐一篇关于使用 重合指数算法 确定为维吉尼亚密钥长度 文章 。

15.同音替换密码

(1)介绍

同音替换密码(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

(2)破解

如果同音替换密码的同音词个数很多,那么破解它难度很大,通常的方法采取类似破解替换密码的"爬山算法",除了找到一个明文字母映射几个字符之外,我们还需要确定映射了那些字符,可以尝试 2层嵌套"爬山算法" 来破解,外层确定映射的数量,内层确定映射字符。

16.仿射密码

(1)介绍

仿射密码(Affine Cipher)是一种单表代换密码,字母表中的每个字母相应的值使用一个简单的数学函数映射到对应的数值,再把对应数值转换成字母。这个公式意味着每个字母加密都会返回一个相同的字母,意义着这种加密方式本质上是一种标准替代密码。因此,它具有所有替代密码的弱点。每一个字母都是通过函数(ax + b)mod m加密,其中B是位移量,为了保证仿射密码的可逆性,a和m需要满足gcd(a , m)=1,一般m为设置为26。更多 参考

常见的字母对应关系:

 

下面我们以E(x) = (5x + 8) mod 26函数为例子

至于解密我们知道

即可得出解密结果

以E(x) = (5x + 8) mod 26加密,通过计算可得D(x)=21(x - 8) mod 26,这样便可以得到明文。

可参考的Python脚本

加解密 传送门

17.培根密码

(1)介绍

培根密码(Baconian Cipher)是一种替换密码,每个明文字母被一个由5字符组成的序列替换,最初的加密方式就是由'A'和'B'组成序列替换明文(所以你当然也可以用别的字母),比如字母'D'替换成"aaabb",以下是全部的对应关系(另一种对于关系是每个字母都有唯一对应序列,I和J与U/V各自都有不同对应序列):

A = aaaaa  I/J = abaaa  R = baaaaB = aaaab  K = abaab    S = baaabC = aaaba  L = ababa    T = baabaD = aaabb  M = ababb    U/V = baabbE = aabaa  N = abbaa    W = babaaF = aabab  O = abbab    X = bababG = aabba  P = abbba    Y = babbaH = aabbb  Q = abbbb    Z = babbb

明文: T H E F O X

密文: baaba aabbb aabaa aabab abbab babab

加解密 传送门

18.ADFGX和ADFGVX密码

(1)ADFGX密码

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 

列移位密钥: how are u

 

密文: DXADF AGXF XFFXD FXGGX DGFG AADA ADXXF

已知密钥加解密:

>>>from pycipher import ADFGX
>>>a = ADFGX('phqgmeaynofdxkrcvszwbutil','HOWAREU')
>>>a.encipher('THE QUICK BROWN FOX')
'DXADFAGXFXFFXDFXGGXDGFGAADAADXXF'
>>>a.decipher('DXADFAGXFXFFXDFXGGXDGFGAADAADXXF')
'THEQUICKBROWNFOX'

在线加解密 传送门

(2)ADFGVX密码

ADFGVX密码实际上就是ADFGX密码的扩充升级版,一样具有ADFGX密码相同的特点,加密过程也类似,不同的是密文字母增加了V,使得可以再使用10数字来替换明文。

    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

由于两种加密过程完全类似这里就不再重复给出加密过程。

>>>from pycipher import ADFGVX
>>>a = ADFGVX('ph0qg64mea1yl2nofdxkr3cvs5zw7bj9uti8','HOWAREU')
>>>a.encipher('THE QUICK BROWN FOX')
'DXXFAFGFFXGGGFGXDVGDVGFAVFVAFVGG'
>>>a.decipher('DXXFAFGFFXGGGFGXDVGDVGFAVFVAFVGG')
'THEQUICKBROWNFOX'

19.双密码

(1)双密码

双密码(Bifid Cipher)结合了波利比奥斯方阵换位密码,并采用分级实现扩散,这里的“双”是指用2个密钥进行加密。双密码是由法国Felix Delastelle发明,除此之外Felix Delastelle还发明了三分密码(Trifid Cipher),四方密码(Four-Square Cipher)。还有一个 两方密码 (Two-Square)与四方密码类似, 共轭矩阵双密码 (Conjugated Matrix Bifid Cipher)也是双密码的变种。

示例密阵:

 3 4 5
| p h q g m
| e a y l n
| o f d x k
| r c v s z
| 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

合并:

33 5435452521 3523311521 34

在经过密阵转换后密文: WETED TKZNE KYOME X

(2)已知密阵加解密

>>>from pycipher import
>>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).encipher('THE QUICK BROWN FOX')
'WETEDTKZNEKYOMEX'
>>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).decipher('WETEDTKZNEKYOMEX')
'THEQUICKBROWNFOX'

在线加解密 传送门

(3)未知密阵破解

手工分析破解双密码是有一定难度的,每个字母都是同过3个数字进行非线性代替转换,而且之后还会对字母顺序进行打乱,这样使双密码比一些替换密码和换位密码更难破解。然而,现在是计算机时代,这张加密方式没有安全性可言,通过 模拟退火 算法就能快速找到双密码的密阵。 这里推荐一篇详细的 双密码破解分析 的文章,基于模拟退火算法实现的工具破解示例:

密文:

KWTAZQLAWWZCPONIVBTTBVQUZUGRNHAYIYGIAAYURCUQLDFTYVHTNQEENUPAIFCUNQTNGITEFUSHFDWHRIFSVTBISYDHHASQSROMUEVPQHHCCRBYTQBHWYRRHTEPEKHOBFSZUQBTSYRSQUDCSAOVUUGXOAUYWHPGAYHDNKEZPFKKWRIEHDWPEIOTBKESYETPBPOGTHQSPUMDOVUEQAUPCPFCQHRPHSOPQRSSLPEVWNIQDIOTSQESDHURIEREN

解密:

得到加密矩阵:

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

明文:

CRYPTANALYS IS OF BIFID BY HAND IS ACTUALLY FAIRLY DIFFICULT THE FRACTIONATING NATURE OF THE CIPHER IE EACH LETTER IS SUBSTITUTED BY CHARACTERS THEN THESE CHARACTERS ARE IUM BLED WHICH WILL PULL THEM APART MAKES THE CIPHER MUCH STRONGER THAN SUBSTITUTION CIPHERS OR TRANSPOSITION CIPHER SON THEIR OWN

20.三分密码

三分密码(Trifid Cipher)结合换位和替换,三分密码与双密码非常相似,差别之处就是用除了3×3×3的密阵代替5×5密阵。

示例密阵:

密阵顺序 = EPSDUCVWYM.ZLKXNBTFGORIJHAQ      方阵 1      方阵 2      方阵 3                                     2 3      1 2 3      1 2 3    E P S    1 M . Z    1 F G O    D U C    2 L K X    2 R I J    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 .3 1 3 1 3 1 2 2 3 3 1 2 3 3 2 23 1 3 2 2 2 2 3 2 1 3 3 1 1 2 11 1 3 2 2 3 2 2 1 3 2 1 1 3 3 2

T(233)表示T在第一个方阵第三行第三列的位置

分组(分组密钥以5为例):

THEQU ICKBR OWNFO X.
1 31223 31233 22
2 22232 13311 21
2 23221 32113 32

合并:

 33132 31132 31223 22232 23221 31233 13311 32113 22 21 32

在经过密阵转换后密文:

3231132312232223223221312331331132113222132
N  O  O  N  W  G  B  X  X  L  G  H  H  W  S  K  W

想要深入了解三分密码并破解三分密码的小伙伴推荐去看LANIKI教授的一篇密码课程章节的 讲义 。

21.四方密码

(1)介绍

四方密码(Four-Square Cipher)是类似普莱菲尔密码双字母加密密码,这样使加密效果强于其他替换密码,因为频率分析变得更加困难了。

四方密码使用4个预先设置的5×5字母矩阵,每个矩阵包括25个字母,通常字母'j'被融入到'i'中(维基百科上说'q'被忽略,不过这不重要,因为'q'和'j'都是很少出现的字母),通常左上和右下矩阵式是标准字母排序明文矩阵,右上和左下矩阵是打乱顺序的密钥矩阵。

示例矩阵:

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

整理明文(分组不够时用'X'填充): TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX

加密过程:分别在明文矩阵中找到'TH',分别找到他们在右上矩阵有左下矩阵的交点字母'ES'就是密文,以此类推。

密文: ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ

(2)已知密钥矩阵加解密

>>>from pycipher import Foursquare
>>>fs = Foursquare('zgptfoihmuwdrcnykeqaxvsbl','mfnbdcrhsaxyogvituewlqzkp')
>>>fs.encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG')
'ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ'
>>>fs.decipher('ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ')
'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'

在线加解密 传送门

(3)未知密钥矩阵破解

推荐一篇关于采用 模拟退火算法 的 四方密码分析 文章,如果有足够多的密文那么四方密码可以轻易被破解,如果知道了明文和密文推出密钥是很容易的,猜测部分明文是一个有效的方法去破解四方密码,如果一部分明文已知或者可以被猜测出 那么我们首先要确定尽可能多可利用的密钥,然后才可以进行更多的推测或者用其他的方法破译。基于四方密码分析一文实现的 C代码 破解示例:

密文(密文最好在200个字符以上):

HMMKEQESDTMDHLAWFWMNKSOSFOMRFNLWLKHNSQGGEKXEOLLVDXNRSQQGARTFKSAVNUDLFNDHESPZGQ TWESAGPGSQSQSTPKUSBBQLQHESAGPGSQSQGXLNAVHTPMHMKKNYGSUGDMTPDGFNKYAVHXLWGEKRILESLZ ZOFNAVIHRHRKAGHSMYUGEGNSRGAVMVOQPRLNKRXLMYLQPXILESQYBNRHRKAGKYQXDIHMPGPYOERZOLBEZ LURFWLWUOLDDPNSQYAGMUQPQWESBEZVEQESDTMDBQLWDIUSHB

用法:

gcc -O3 -lm foursquarecrack2.c scoreText_2.c -o fsc
./fsc

输出结果:

Running foursquarecrack, this could take a few minutes... 
best score so far: -1239.505249, on iteration 1
Key: 'KFMLUGWSQEPOZTNRBHDAVXCIY','UGSVKFIZMOYXPQRWTHLNCABED'     
plaintext: 'THECIPHERTEXTSQUARESCANBEGENERATEDUSINGAKEYWORDDROPPINGDUPLICATELETTERSTHENFILLTHEREMAININGSPACESWITHTHEREMAININGLETTERSOFTHEALPHABETINORDERALTERNATIVELYTHECIPHERTEXTSQUARESCANBEGENERATEDCOMPLETELYRANDOMLYTHEFOURSQUAREALGORITHMALLOWSFORTWOSEPARATEKEYSONEFOREACHOFTHETWOCIPHERTEXTMATRICESX'

22.棋盘密码

棋盘密码(Checkerboard Cipher)是使用一个波利比奥斯方阵和两个密钥作为密阵的替换密码,通常在波利比奥斯方阵中J字母往往被包含在I字母中。

示例密阵:

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

经过密阵替换:

明文:T  H  E  Q  U  I  C  K  B  R  O  W  N  F  O  X
密文:RK BK RU OC OC BI NK BQ WK RI OQ WI BU NU OQ WU

23.跨棋盘密码

跨棋盘密码(Straddle Checkerboard Cipher)是一种替换密码,当这种密码在结合其他加密方式,加密效果会更好。

棋盘示例(选择3和7作为变换):

 2 3 4 5 6 7 8 9f k m   c p d   y e
: h b i g q r o s a z
: 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

当然我们还可以继续用其他的加密方式在对跨棋盘密码加密出的结果再进行加密:

示例变换密钥:83729

29837298372983729837+7230934713241313536757403677-----------------------------
817432078501808630122404

在经过棋盘转换后:

32078501808630122404
ppfmyk n if  pfkyfyd hkmmcfc

最终得到密文: ppfmyk n if pfkyfyd hkmmcfc

在线加解密 传送门

24.分组摩尔斯替换密码

分组摩尔斯替换密码(Fractionated Morse Cipher)首先把明文转换为莫尔斯电码,不过每个字母之间用 分开,每个单词用 xx 分开。然后使用密钥生成一个替换密表,这个密表包含所有 . - x 组合的情况(因为不会出现 xxx 的情况,所以一共26种组合)。

密钥: MORSECODE

密表:

MORSECDABFGHIJKLNPQTUVWXYZ
.........---------XXXXXXXX
...---XXX...---XXX...---XX
.-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开始选取不重复的字母,之后再从字母表中按序选取没有出现的字母组成密钥矩阵。

明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG

随机数字: 2333

明文矩阵:

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

示例密钥矩阵:

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

明文分组:

   3   3   2   3   3   3  2   3   3  3
TH EQU ICK BRO WN FOX JUM PSO VE RTH ELA ZYD OG

分组明文反序:

HT UQE KCI ORB WN XOF MUJ OSP EV EHT ALE DYZ GO

使用密钥矩阵替换:

IL XHP QEG KDS YR CKW NXG KBV PU ILD TOP FMZ AK

(比如'H'在明文矩阵对应到密钥矩阵的位置就是'I')

已知密钥在线加解密 传送门

26.Digrafid密码

Digrafid密码(Digrafid Cipher)使用两个密钥生成分别生成类似波利比奥斯方阵的3x9方格的密表。,主要有3分组和4分组两类。

第一个方阵密钥: digrafid

第二个方阵密钥: cipher

密表:

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

明文: THE QUICK BROWN FOX

密表转换(以4分组为例):

Th Eq Ui Ck   Br Ow Nf Ox1  3  9    8  7  6  75  7  2    1  6  5  69  2  4    6  5  1  6

说明:T在第一矩阵第2列,h在第二矩阵第4行,T所在的行与h所在的列相交的位置数字为7,所以Th表示为274。

转换密文:

 724 924   876 716 566 516
Ip  #e  Dk  Ck    Zr  Dr  Mx  Ar

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”。解密后的文字如下:

I have deposited in the county of Bedford...

比尔密码还有一段有趣的故事,感兴趣可以看一下比尔密码的 详细介绍 。

29.键盘密码

一般用到的键盘密码就是手机键盘和电脑键盘两种,2014 0ctf比赛里Crypto类型中Classic一题就是电脑键盘密码,详细可以 参考 ,另外给出另外一些 参考 情况。

其他有趣的机械密码

1.恩尼格玛密码

恩尼格玛密码机(德语:Enigma,又译哑谜机,或“谜”式密码机)是一种用于加密与解密文件的密码机。确切地说,恩尼格玛是对二战时期纳粹德国使用的一系列相似的转子机械加解密机器的统称,它包括了许多不同的型号,为密码学对称加密算法的流加密。详细工作原理参考 维基百科 。

在线模拟 传送门

感兴趣可以观看 播单:计算机历史文化课

代码混淆加密

1. asp混淆加密

2.[php language="混淆加密"][/php][/php] 118

3.[css language="/js混淆加密"][/css][/css] 119

4. VBScript.Encode混淆加密

5.ppencode

ppencode-Perl把Perl代码转换成只有英文字母的字符串。

ppencode 传送门

6.rrencode

rrencode可以把ruby代码全部转换成符号。

rrencode 传送门

7.jjencode/aaencode

jjencode将JS代码转换成只有符号的字符串,类似于rrencode,介绍的 PPT ,aaencode可以将JS代码转换成常用的网络表情,也就是我们说的颜文字js加密。

 

aaencode 传送门

jjencode/aaencode的解密直接在浏览器的控制台里输入密文即可执行解密,想要详细了解jjencode是如何进行请 参考 ,你也可以在github上 下载 实现jjdecoder的源码进行分析。

8.JSfuck

JSFuck 可以让你只用 6 个字符 [ ]( ) ! + 来编写 JavaScript 程序。

JSfuck 传送门

9.jother

jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中8个少量字符包括: ! + ( ) [ ] { } 。只用这些字符就能完成对任意字符串的编码。

do9gy 的 jother编码之谜

jother编码 传送门

jother直接在浏览器(IE可以)的控制台里输入密文即可执行解密:

10.brainfuck

Brainfuck是一种极小化的计算机语言,按照"Turing complete(完整图灵机)"思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言,BrainF**k 语言只有八种符号,所有的操作都由这八种符号( > < + - . , [ ] )的组合来完成。

明文:hello!

+++++ +++++ [->++ +++++ +++<] >++++ .---. +++++ ++..+ ++.<+ +++++ +++++
[->++ +++++ ++++< ]>+++ ++++. <++++ +++[- >---- ---<] >--.< +++++ ++[->
----- --<]> ----- ----- .<

brainfuck 传送门

其他稀奇古怪的编程语言请 参考

相关工具

  • JPK神器

  • 密码破解脚本

  • shellcode转换脚本

参考网站

  • Wikipedia Classical Cipher

  • Cryptogram Cipher Types

  • Practical Cryptography

  • Rumkin Cipher Tools

  • encode-decode

  • 4ido10n Blog

  • Anagram

  • Thonky

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 实验03、选择与循环(11题)

    【实验目标】 1)熟练掌握Python选择结构与循环结构语法&#xff0c;理解缩进的作用。 2)熟练运用for循环和while循环&#xff0c;理解带有else子句的循环语句执行流程。 3)理解break语句和continue语句在循环中的作用。 4)理解并能够熟练设计条件表达式。 【学习重点】 and不一…...

    2024/4/26 14:09:59
  2. python:读取XML的类名并反射创建类对象(工厂模式)

    需求 根据传递的参数到xml中查找全类名&#xff0c;并反射获取类对象。这样对外只提供一个接口即可创建不同类的对象。 实现 此功能实现分为两部分&#xff1a;读取xml和反射获取类对象。 解析xml文件 python解析xml网上有很多教程&#xff0c;本文不再说明&#xff0c;可…...

    2024/4/27 12:24:38
  3. Matlab 常用语句(5)---eig(求特征值和特征向量)

    eig 特征值和特征向量 语法&#xff1a; e eig(A) [V,D] eig(A) [V,D,W] eig(A) e eig(A,B) [V,D] eig(A,B) [V,D,W] eig(A,B) 说明&#xff1a; &#xff08;1&#xff09;e eig(A) 返回一个列向量&#xff0c;其中包含方阵 A 的特征值。 A 44 1.0000 0.500…...

    2024/4/24 14:58:13
  4. sip协议

    sip协议 https://www.cnblogs.com/gardenofhu/p/7299963.html...

    2024/4/27 23:29:30
  5. raft选举

    https://www.iteblog.com/api/raft/ raft协议: leader选举的过程 节点有3中状态: Follower > Candidate(候选人) > Leader election timeout 是follower变成Candidate的时间,这是一个150ms 到 300ms的随机数 heartbeat timeout leader向follower发送的信息 leader选举…...

    2024/4/4 13:27:57
  6. 如何保证RabbilMQ消息可靠传输?

    生产者丢失消息&#xff1a; RabbitMQ提供transaction和confirm模式来确保消息不丢失。transaction模式&#xff1a;发送消息是开启事务&#xff0c;如果消息发送异常则进行回滚&#xff0c;如果发送成功则进行提交。confirm模式&#xff1a;发布的消息会获得以个唯一的ID一但消…...

    2024/4/27 14:56:17
  7. Bash scripting

    title: Bash scripting category: CLI layout: 2017/sheet tags: [Featured] updated: 2019-10-02 keywords: VariablesFunctionsInterpolationBrace expansionsLoopsConditional executionCommand substitution 摘选自&#xff1a;https://github.com/rstacruz/cheatsheets项目…...

    2024/4/26 2:42:27
  8. 使用二维数组的方式实现快递柜小程序

    使用二维数组的方式实现快递柜 具体要求如下&#xff1a; 具体思路&#xff1a; 1、info类&#xff0c;创建用于储存的各种变量 public class Info {private String number;private String company;private int code;//创建所需要的各种方法 }2、开始写方法适当的封装 1、…...

    2024/4/28 0:48:20
  9. c++11多线程编程 整理(二) thread 初探

    C11 引入了一个新的线程库&#xff0c;包含了用于启动、管理线程的诸多工具&#xff0c;与此同时&#xff0c;该库还提供了包括互斥量、锁、原子量等在内的同步机制。在这个系列的教程中&#xff0c;我将尝试向大家展示这个新库提供的大部分特性。 为了能够编译本文的示例代码&…...

    2024/4/26 1:13:13
  10. 前端交互的各种事件

    1&#xff1a;什么是事件&#xff1f; 人与机的交互就是事件。 2&#xff1a;事件类型&#xff1a; ui事件 *onscroll 滚动条事件 onload 页面加载触发 unload 页面关闭触发 onselect 选中文本时触发 onresize 改变浏览器窗口触发 onabort 图像加载被中断触发 error 错误信息时…...

    2024/5/2 0:58:15
  11. 变量何时抽取以及命名位置等细节

    抽取变量目的是方便阅读理解 先看个代码示例&#xff0c;持久化文章到文件系统&#xff0c;分成了3步&#xff1a; 计算保存文件的路径数据库存储对象转Json字符串把json字符串保存到对应的文件中var articlePath FileStoreUtil.getArticlePath(articleDo.getIdPin());var a…...

    2024/4/29 13:28:27
  12. GDB小记

    今天尝试了下用gdb来调试&#xff08;输出大法好 &#xff09; 要注意&#xff0c;对于一个gcc或者是g直接用 gcc/g -o 编译出来的执行程序&#xff0c;是无法直接使用gdb调试的&#xff0c;只有加入-g指令&#xff0c;才会进行包含调试信息的编译。 例&#xff1a; gcc mai…...

    2024/4/29 12:13:10
  13. 二叉树的前序遍历

    二叉树的前序遍历 二叉树的前序遍历&#xff0c;即按根-左-右的顺序遍历节点&#xff0c;如上图所示的二叉树&#xff0c;前序遍历为1-2-4-5-3-6-7 递归实现二叉树的前序遍历 递归传入的参数&#xff1a;根节点递归终止条件&#xff1a;当前传入的节点是否为空递归的函数体&a…...

    2024/4/28 12:43:28
  14. 哈希表问题

    面试题 10.02. 变位词组 https://leetcode-cn.com/tag/hash-table/ /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assum…...

    2024/4/11 2:04:51
  15. 数据结构——二叉树的遍历及实现

    对于一个二叉树&#xff0c;可以按照以下几种策略进行遍历。 &#xff08;1&#xff09;层次遍历&#xff1a;如果二叉树为空&#xff0c;遍历操作为空&#xff1b;否则从第一层开始&#xff0c;从上至下&#xff0c;逐层访问每一层结点&#xff0c;当访问某一层时&#xff0c…...

    2024/5/3 0:16:56
  16. Hadoop HA(高可用)搭建

    实验环境 Centos 7主机三台 主机名IPmaster10.30.59.130slave110.30.59.131slave210.30.59.133 软件要求 软件名称软件版本JDK8u77Zookeeper3.4.5Hadoop2.6.0软件约束 1、安装包在 /opt/soft 2、安装目录在 /opt先决条件 各个主机已完成 主机名-IP 映射各个主机已完成ssh免…...

    2024/4/28 15:03:18
  17. 面向对象两道训练题

    面向对象基础训练题 定义并测试一个代表员工的 Employee 类。它的属性包括“员工姓名”、“员工号码”、“员工基本薪水”、“员工薪水增长率”&#xff1b;他的方法包括“构造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、“计算薪水增长额”及“计算…...

    2024/4/6 21:40:44
  18. 数据结构代码示例——C语言

    数据结构代码示例——C语言 其中内容按照《数据结构与算法》&#xff08;西安电子科技大学出版社&#xff09;的编排顺序与内容挑选编写的&#xff0c;内容均为博主自己一行一行敲的。文章目录数据结构代码示例——C语言第二章&#xff1a;线性表第三章&#xff1a;栈和队列(持…...

    2024/4/7 1:49:44
  19. 反射和注解

    反射&#xff1a;框架设计的灵魂 框架&#xff1a;半成品软件。可以在框架的基础上进行软件开发&#xff0c;简化编码 反射&#xff1a;将类的各个组成部分封装为其他对象&#xff0c;这就是反射机制 好处&#xff1a; 可以在程序运行过程中&#xff0c;操作这些对象。可以解耦…...

    2024/4/6 22:42:51
  20. 安全HCIP之等保测评

    国家信息安全等级保护测评标准 没有网络安全就没有国家安全待补充。。。...

    2024/4/22 12:40:22

最新文章

  1. 计算机毕业设计hadoop+hive+hbase学情分析 在线教育大数据 课程推荐系统 机器学习 深度学习 人工智能 大数据毕业设计 知识图谱 大数据毕业设计

    毕 业 设 计&#xff08;论 文&#xff09;开 题 报 告 1&#xff0e;结合毕业设计&#xff08;论文&#xff09;课题情况&#xff0c;根据所查阅的文献资料&#xff0c;每人撰写不少于1000字的文献综述&#xff1a; 一、研究背景和意义 “互联网”和大数据带来了网络教育的蓬…...

    2024/5/3 9:27:49
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 09 spring-boot-acurator 定时检测 redis 集群导致 “IOException: Too many open files“

    前言 问题的现象主要是如下 项目刚启动的时候 十分正常, 然后 随着时间的推移, 比如说 项目跑了 四五天之后 项目 突然出现问题, 一部分服务能够正常访问, 一部分服务抛出异常 异常信息 就是 too many files 这里的主要的问题是 在异常之前, redis 集群没有密码, 然后 …...

    2024/4/30 8:18:44
  4. 新能源汽车驱动电机振动噪音分析

    驱动电机示例图 驱动电机的噪声主要分为空气动力噪声、电磁噪声和机械噪声。其中在高速运转时空气动力噪声是主要噪声&#xff0c;中低速运转时电磁噪声为主要噪声。 1、空气动力噪声&#xff1a; 空气噪声主要由于风扇转动&#xff0c;使空气流动、撞击、摩擦而产生&#x…...

    2024/5/3 0:18:58
  5. 01、Lua 入门教程

    Lua 入门教程 Lua是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。 Lua是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of…...

    2024/4/30 16:05:23
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/2 11:19:01
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/2 9:47:31
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/2 9:47:31
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/2 6:03:07
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/2 9:47:30
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/2 5:31:39
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/2 9:47:28
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/2 9:47:27
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/2 9:47:26
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/2 23:47:16
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/2 18:46:52
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/3 7:43:42
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57