Command-line Environment
SIGNAL
您的 shell
会使用 UNIX
提供的信号机制执行进程间通信。
我们可以使用man signal
来查看signal
的帮助文档。
对于如下的 python
程序
1 | #!/usr/bin/env python |
运行该程序后按 ctrl+c
会捕捉到信号程序继续运行。
视频中按 ctrl+\
可以结束程序,但是我这里不知道为什么不行,得按 ctrl+z
。
您的 shell
会使用 UNIX
提供的信号机制执行进程间通信。
我们可以使用man signal
来查看signal
的帮助文档。
对于如下的 python
程序
1 | #!/usr/bin/env python |
运行该程序后按 ctrl+c
会捕捉到信号程序继续运行。
视频中按 ctrl+\
可以结束程序,但是我这里不知道为什么不行,得按 ctrl+z
。
1 | rust@DESKTOP-L4PLVQ4:~/missing$ ls -lhat --color |
1 | #marco.sh |
1 | rust@DESKTOP-L4PLVQ4:~/missing/test$ source marco.sh |
1 | count=1 |
shell可以定义变量
1 | rust@DESKTOP-L4PLVQ4:~$ foo=bar |
用空格分开会被认为是可执行程序
1 | rust@DESKTOP-L4PLVQ4:~$ foo = bar |
在打印字符串的时候,单引号和双引号相同
1 | rust@DESKTOP-L4PLVQ4:~$ echo "Hello" |
但是在打印变量的时候,单引号不会替换变量
1 | rust@DESKTOP-L4PLVQ4:~$ echo "Value is $foo" |
1 | void encipher(unsigned int v[2], unsigned int key[4]) { |
TEA的特点
TEA的设计:
$feistel$结构,用+-代替⊕(XOR)
轮函数F比较简单
轮多:32个循环,64轮。
其中$\delta = \lfloor(\sqrt{5}-1)2^{31} \rfloor$,只要不为0就行。
TEA的解密函数
1 | void decipher(unsigned int v[2], unsigned int key[4]) { |
加密本质上由两部分组成,分别为置换、替代:
置换($permutation$):如左边第一个位置的值到右边换到第三位。左右两边1或0的个数必定相等。P-box的输入线数可以做的很大。
/image-20220322165135496.png)
替代($substituion$):解码器+ p-box + 编码器 构成s-box。左右两边1或0的个数不一定相等。他的输入线数不适合做很大。
/image-20220322170743324.png)
组合:并联 + 串联,同时引入密钥,就构成了DES加密算法的雏形。
/image-20220322172125431.png)
由于S盒输入线数不适合做的很大,所以可以采用多个S盒并联和然后和P盒串联来构成一轮加密操作。每一轮加密操作之前明文都要和密钥进行异或操作。
DES利用56比特串长度的密码来加密长度为64位的明文,经过16轮运算,得到长度为64位的密文。密钥通过16轮密钥扩展算法生成16个子密钥。
/image-20220322180312723.png)
56-bit
。扩散(Diffusion):明文的统计结构被扩散消失到密文的长程统计特性,使得明文和密文之间的统计关系尽量复杂。
混乱(confusion):使得密文的统计特性与密钥的取值之间的关系尽量复杂。
明文或密文变化1bit密文所有bit都可能发生变化。
The best is : 每bit变化的概率为$\frac{1}{2}$ ,且bit之间变化相互独立。