Skip to content

Commit a3c906d

Browse files
committed
2023-04-10 18:30:59
1 parent 3b965cc commit a3c906d

File tree

9 files changed

+14
-14
lines changed

9 files changed

+14
-14
lines changed

docs/cracking/01.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@
153153

154154
2. 在窗口右上角的搜索框中输入 Python 。
155155

156-
3. 选择 **IDLE(使用 Python 3.6)** ,或者随便什么最新版本。
156+
3. 选择 **IDLE(使用 Python 3.6** ,或者随便什么最新版本。
157157

158158
4. 点击**安装**
159159

docs/cracking/02.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@
9595

9696
*图 1-2:用 8 的凯撒密钥加密信息*
9797

98-
对于消息中的每个字母,在外圈找到它,并用内圈的相应字母替换它。在这个例子中,消息中的第一个字母是 T(“THE SECRET…”中的第一个 T ),所以在外圆中找到字母 T,然后在内圆中找到相应的字母,也就是字母 b。因此,秘密消息总是用 b 替换 T。(如果您使用不同的加密密钥,明文中的每个 T 将被替换为不同的字母。)消息中的下一个字母是 H,变成 p,字母 E 变成 m,外轮上的每个字母总是加密到内轮上的同一个字母。为了节省时间,在您查找“THE SECRET…”中的第一个 T 并看到它加密到 B 后,您可以将消息中的每个 T 替换为 B,因此您只需要查找一个字母一次。
98+
对于消息中的每个字母,在外圈找到它,并用内圈的相应字母替换它。在这个例子中,消息中的第一个字母是 T(“THE SECRET…”中的第一个 T,所以在外圆中找到字母 T,然后在内圆中找到相应的字母,也就是字母 b。因此,秘密消息总是用 b 替换 T。(如果您使用不同的加密密钥,明文中的每个 T 将被替换为不同的字母。)消息中的下一个字母是 H,变成 p,字母 E 变成 m,外轮上的每个字母总是加密到内轮上的同一个字母。为了节省时间,在您查找“THE SECRET…”中的第一个 T 并看到它加密到 B 后,您可以将消息中的每个 T 替换为 B,因此您只需要查找一个字母一次。
9999

100-
在您加密整个消息之后,原始消息(秘密密码是 ROSEBUD)就变成了 BPM AMKZMB XIAAEWZL QA ZWAMJCL。请注意,非字母字符(如空格)不会改变。
100+
在您加密整个消息之后,原始消息(秘密密码是 ROSEBUD就变成了 BPM AMKZMB XIAAEWZL QA ZWAMJCL。请注意,非字母字符(如空格)不会改变。
101101

102102
现在你可以把这封加密的邮件发送给别人(或者自己保存),除非你告诉他们秘密的加密密钥,否则没有人能够阅读它。一定要对加密密钥保密;任何知道消息是用密钥 8 加密的人都可以读取密文。
103103

docs/cracking/04.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,11 +319,11 @@ Al's cat is named Zophie.
319319

320320
| **转义字符** | **打印结果** |
321321
| --- | --- |
322-
| `\\` | 反斜杠(`\`) |
323-
| `\'` | 单引号(`'`) |
324-
| `\"` | 双引号(`"`) |
322+
| `\\` | 反斜杠(`\` |
323+
| `\'` | 单引号(`'` |
324+
| `\"` | 双引号(`"` |
325325
| `\n` | 新行 |
326-
| `\t` | Tab制表符 |
326+
| `\t` | 制表符 |
327327
328328
反斜杠总是在转义字符之前。即使你只想在字符串中加一个反斜杠,也不能只加一个反斜杠,因为 Python 会把下一个字符解释为转义字符。例如,这行代码不能正常工作:
329329

docs/cracking/05.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ print(translated)
5858
.daed era meht fo owt fi ,terces a peek nac eerhT
5959
```
6060

61-
要解密此消息,通过高亮显示消息并按下 Windows 和 Linux 上的`ctrl` -C 或 macOS 上的Cmd -C,将`.daed era meht fo owt fi ,terces a peek nac eerhT`文本复制到剪贴板。然后将其粘贴(在 Windows 和 Linux 上使用`ctrl` -V 或者在 macOS 上使用Cmd -V)为第 4 行`message`中存储的字符串值。确保在字符串的开头和结尾保留单引号。新的第 4 行看起来像这样(用粗体表示的变化):
61+
要解密此消息,通过高亮显示消息并按下 Windows 和 Linux 上的`ctrl` -C 或 macOS 上的Cmd -C,将`.daed era meht fo owt fi ,terces a peek nac eerhT`文本复制到剪贴板。然后将其粘贴(在 Windows 和 Linux 上使用`ctrl` -V 或者在 macOS 上使用`Cmd+V`为第 4 行`message`中存储的字符串值。确保在字符串的开头和结尾保留单引号。新的第 4 行看起来像这样(用粗体表示的变化):
6262

6363
```py
6464
message = '.daed era meht fo owt fi ,terces a peek nac eerhT'

docs/cracking/06.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz12345
481481

482482
您已经学习了几个编程概念,并通读了相当多的章节,现在您有了一个实现秘密密码的程序。更重要的是,您了解这些代码是如何工作的。
483483

484-
模块是包含有用函数的 Python 程序。要使用这些函数,您必须首先使用一个`import`语句导入它们。要调用导入模块中的函数,在函数名前加一个句点,像这样:module.function().
484+
模块是包含有用函数的 Python 程序。要使用这些函数,您必须首先使用一个`import`语句导入它们。要调用导入模块中的函数,在函数名前加一个句点,像这样:`module.function()`
485485

486486
常量变量按照约定用大写字母书写。这些变量并不意味着它们的值被改变(尽管没有什么能阻止程序员编写这样做的代码)。常量很有帮助,因为它们为程序中的特定值提供了一个“名称”。
487487

docs/cracking/09.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
将 3.75 四舍五入为 4,你的朋友将画出一个由四列(他们刚刚计算出的数字)和八行(钥匙)组成的格子。
3131

32-
你的朋友还需要计算需要遮蔽的箱子数量。使用盒子的总数(32),他们减去密文的长度(30):32–30 = 2。它们在*最右边*列的*底部*的两个方框中着色。
32+
你的朋友还需要计算需要遮蔽的箱子数量。使用盒子的总数(32),他们减去密文的长度(30:32–30 = 2。它们在*最右边*列的*底部*的两个方框中着色。
3333

3434
然后他们开始填充盒子,在每个盒子里放一个密文字符。从左上角开始,它们向右填充,就像加密时一样。密文是“Cenoonommstmme oo snnio。s s c”,所以“Ceno”在第一行,“onom”在第二行,依此类推。当它们完成后,这些方框看起来将像图 8-1 中的(一个/代表一个空格)。
3535

docs/cracking/18.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383

8484
密码字母映射显示字母表中的所有字母及其潜在的解密字母。当我们开始收集加密消息时,我们将为字母表中的每个字母找到潜在的解密字母,但是因为只有密码字母 H、G 和 U 是我们示例密文的一部分,所以我们没有其他密码字母的潜在解密字母。
8585

86-
还要注意,U 只有两个潜在的解密字母(Y 和 S ),因为候选字母之间有重叠,其中许多以字母 Y 结尾。*重叠越多,潜在的解密字母就越少,就越容易找出该密码字母解密成什么。*
86+
还要注意,U 只有两个潜在的解密字母(Y 和 S),因为候选字母之间有重叠,其中许多以字母 Y 结尾。*重叠越多,潜在的解密字母就越少,就越容易找出该密码字母解密成什么。*
8787

8888
为了用 Python 代码表示表 17-1 ,我们将使用一个字典值来表示密码字母映射,如下所示(`'H'``'G'``'U'`的键值对以粗体显示):
8989

docs/cracking/21.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,7 @@ def attemptHackWithKeyLength(ciphertext, mostLikelyKeyLength):
10381038
10391039
但是检查英语频率匹配有助于确定每个子项的四个最可能的字母。继续 ROSEBUD 的例子,这意味着我们只需要检查`4 ** 7`,或者 16384 个可能的键,这比 80 亿个可能的键有了巨大的改进!
10401040
1041-
#### end 关键字自变量为 print()
1041+
#### `print()`的`end`关键字参数
10421042
10431043
接下来,我们希望向用户打印输出。为此,我们使用`print()`,但是将一个参数传递给一个我们以前没有使用过的可选参数。每当调用`print()`函数时,它都会将传递给它的字符串和换行符一起打印到屏幕上。要在字符串末尾打印其他内容而不是换行符,我们可以为`print()`函数的`end`关键字参数指定字符串。在交互式 shell 中输入以下内容,查看如何使用`print()`函数的`end`关键字参数:
10441044

docs/cracking/22.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
*图 21-1:使用一次性密码本加密一个示例消息*
4141

42-
现在想象一个密码分析者得到了密文(SHOM TDEC)...).他们怎么能攻击密码呢?强行通过按键是行不通的,因为即使对计算机来说,按键也太多了。密钥的数量将等于消息中字母总数的 26 次方。因此,如果在我们的示例中消息有 55 个字母,那么总共有`26 ** 55`,即 666091878431395624153823182526730590376250379528249805353030484209594192
42+
现在想象一个密码分析者得到了密文(`SHOM TDEC...`.他们怎么能攻击密码呢?强行通过按键是行不通的,因为即使对计算机来说,按键也太多了。密钥的数量将等于消息中字母总数的 26 次方。因此,如果在我们的示例中消息有 55 个字母,那么总共有`26 ** 55`,即 666091878431395624153823182526730590376250379528249805353030484209594192
4343

4444
即使密码分析员有一台足够强大的计算机来尝试所有的密钥,它仍然无法破解*一次性密码本*,因为对于任何密文,所有可能的明文消息都有相同的概率。
4545

@@ -105,7 +105,7 @@ Python 3.6 和更高版本有`secrets`模块,它使用操作系统的真正随
105105

106106
你已经学会了如何破解维吉尼亚密码。如果我们可以证明两次填充密码和维吉尼亚密码是一样的,我们就可以用破解维吉尼亚密码的相同技术来证明它是可破解的。
107107

108-
为了解释为什么两次性密码本就像维吉尼亚密码一样是可破解的,让我们回顾一下维吉尼亚密码在加密长度超过密钥的消息时是如何工作的。当我们用完了密钥中用于加密的字母时,我们返回到密钥的第一个字母并继续加密。例如,要用 10 个字母的密钥(如 YZNMPZXYXY)加密 20 个字母的消息(如蓝碘 INBOUND CAT ),前 10 个字母(蓝碘)用 YZNMPZXYXY 加密,然后接下来的 10 个字母(INBOUND CAT)也用 YZNMPZXYXY 加密。图 21-3 显示了这种环绕效果。
108+
为了解释为什么两次性密码本就像维吉尼亚密码一样是可破解的,让我们回顾一下维吉尼亚密码在加密长度超过密钥的消息时是如何工作的。当我们用完了密钥中用于加密的字母时,我们返回到密钥的第一个字母并继续加密。例如,要用 10 个字母的密钥(如 YZNMPZXYXY)加密 20 个字母的消息(如蓝碘 INBOUND CAT,前 10 个字母(蓝碘)用 YZNMPZXYXY 加密,然后接下来的 10 个字母(INBOUND CAT)也用 YZNMPZXYXY 加密。图 21-3 显示了这种环绕效果。
109109

110110
![Images](img/bab228282655653e32398856b6118805.png)
111111

0 commit comments

Comments
 (0)