内容正文:
我重生了,上一世因为忘记修改门锁密码,遭遇背叛,被坏人盗取了我的心血,这一世,我一定好好学习加密手段,拿回属于我的一切,同学们,跟我一起学习,聆听我的复仇计划!
3.4 加密与解密
注意:
门锁密码是由26个英文字母或者英文状态下的符号组成,如果可以给密码加密,坏人就得不到正确的密码,这就是我计划的第一步!
说到由字母组成的信息加密……,我想到了
凯撒加密法
凯撒加密法
凯撒加密法的核心就是平移,就是把明文中所有的字母在字母表上向后(或向前),按固定数目平移,得到一组新的字母作为密文。
加密算法
ON SUNDAY
明文数据
密钥
RQ VXQGDB
密文数据
密钥
ON SUNDAY
明文数据
加密
解密
解密算法
加密并不能防止信息被他人截取,但能防止截取者理解信息内容,从而保证信息安全。
需要被加密的内容我们称为明文,加密就是以某种特定的方法改变原有的信息内容,让原有的信息内容无法被轻易读取,用来完成加密与解密的秘密信息称为秘钥,从加密后的内容中读取出原有的信息叫做解密,加密后所呈现的内容称为密文。
凯撒加密法是这样给信息加密的:
设计秘钥。如果想让字母向后平移,秘钥为N(N为1~25中的任意数字);如果想让字母向前平移,秘钥为-N(N为1~25中的任意数字)。现在,假设秘钥为3,也就是把明文中所有的字母在字母表上向后平移3个位置。
A
B
C
D
E
F
H
G
I
J
K
M
L
N
O
P
Q
R
T
S
U
V
W
Z
Y
X
向后平移3个位置
1
2
根据秘钥给字母加密。例如加密信息里的字母A位向后平移3个位置对应字母D,字母X向前平移23个位置对应字母A。
A
B
C
D
E
F
H
G
I
J
K
M
L
N
O
P
Q
R
T
S
U
V
W
Z
Y
X
A
B
C
D
E
F
H
G
I
J
K
M
L
N
O
P
Q
R
T
S
U
V
W
Z
Y
X
3
明文
密文
根据对应关系,替换明文中的字母,加密完成!
任务一:使用流程图描述凯撒密码的加密过程
开始
输入明文c
密文b置初值为空
输出密文b
结束
设计恺撒密码加密算法:
循环实现对明文c中的每一位字符进行加密,并按顺序存放于密文b中
计数器i置初值为0
i<明文长度
c[i]介于
' a '与' w '或
' A '与' W '之间
c[i]在字母表中后移3位,并连接到密文b后
c[i]前移23位,并连接到密文b后
c[i]介于
' x '与' z '或
' X '与' Z '之间
计数器i=i+1
密文与明文相同
F
Y
Y
N
N
T
使用for循环加密的过程
任务二:完善python程序,编写凯撒密码小程序
小贴士:len函数可以帮助我们获取字符串中字符的个数
ord函数可以帮助我们将字符类型的参数转换成对应的整数值,chr函数可以将整数类型的参数转换成对应的字符。
任务三:凯撒密码的安全性高吗?
为了此次复仇计划万无一失,我一定保证这个加密方法难以破解,你能帮我试一试吗?
密文如下:
Emtt lwvm! Nivbiabqk rwj!
已知加密方法为移位密码,请帮我破解,看看需要几次!
思考:
密钥 k 有多少种可能?
最多25次!
这种把所有密钥可能的值都进行尝试的解密方法称为穷尽密钥搜索法,或称暴力破解法。
任务三:凯撒密码的安全性高吗?
不行,太容易破解了,你有什么好的方法吗?
密钥
密钥
对称加密体制
任务三:凯撒密码的安全性高吗?
改进加法密码的方法有哪些?
1.使用非对称加密体制,即加密和解密使用不同密钥。
2.使每个字母的偏移值不相同,没有明显规律。
一
一
对
应
例如:按照上表,可以把明文HELLO加密为?
XDRRO
HELLO
明文:
密文:
加密
任务四:优化凯撒密码小程序
要求:
“A”~“G”,秘钥为3
“H”~“S”,秘钥为8
“T”~“Z”,秘钥为-10
思考:
代换密码,即每个字母的偏移值不相同,没有明显规律。
思考:采用暴力破解法破解代换密码,有多少种可能?
A B C D E F …… X Y Z
26 25 24 23 22 21 … … 3 2 1
× × × × × × × ×
26! 种
4.0×1026
600多年
代换密码安全性如何?
——统计破解法
一
一
对
应
1、在英文中,26个字母的使用频率有很大差异,例如字母 E 出现的频率远远大于字母 Q 。2004年发布的《牛津简明词典》中对英文字母使用频率做了统计,如右图。
2、代换密码的置换表中,字母是一一对应的。
破解代换密码——统计破解法
基于以上两个