内容正文:
/第12课 数据解密
八上信息技术
课程目标
一、数据解密的过程
二、数据解密的算法
三、我国商用密码的发展
探索讨论
复习导入
1.回忆上节课TFBOYS的解密故事,说说“L ORYH BRX”这段字母的含义,当时是如何加密的?
图像识别是什么
密码是如何加密成密文的?
密码:I LOVE YOU
密文:L ORYH BRX
数据加密
加密
加密密钥
明文
密文
加密过程
日积月累
在数据解密过程中,秘钥起着关键的作用,如果其他人获得用于解密的秘钥,密文的机密性将无法得到保证。密钥管理是信息安全的基础,管理和保护好密钥,关系到个人隐私保护、企业商业秘密甚至国家安全。
思考:在日常生活中,你的哪些数据需要通过加密解密来保障其安全,能否分享一下你设计的秘钥。
数据解密算法
密文:L ORYH BRX
明文:I LOVE YOU
数据解密
加密
解密密钥
密文
明文
解密过程
解密算法描述
初始:初始化明文变量mingwen。
输入:密文 miwen。
处理:若密文中的字母介于“a~c”或“A~C”之间,该字母想后移动23位;若密文中的字母介于“d~z”或“D~Z”之间,该字母向前移3位。
输出:明文mingwen
任务一 程序实现
mingwen = ""
miwen = input()
for i in miwen:
if 'a' <= i <= 'c' or 'A' <= i <= 'C':
mingwen += chr(ord(i)+23)
elif 'd' <= i <= 'z' or 'D' <= i <= 'Z':
mingwen += chr(ord(i)-3)
else:
mingwen += i
print(mingwen)
密文:L ORYH BRX
明文:I LOVE YOU
数据解密测试
亲身体验
任务二:定制新的秘钥规则,修改程序,并进行测试。
并在任务单上写出密文,秘钥,明文的内容
密文 秘钥 明文
我国商业密码的发展
2019年《中华人民共和国密码法》颁布,商业密码进入有法可依的新时期。
任务三:搜索国产商业密码算法,完成下表
序号 密码算法全称 简称 功能及应用
1 SM4分组密码算法 SM4 一种对称加密分组密码算法,用于加密大数据量。它的秘钥长度为128位,分组长度为128位,具有高效性和安全性。
2
3
插入标题
Multimedia Cloud Transcode (cloud.baidu.com)
Content Adaptive Encoding 3.0
$$# 明文转密文
# coding=utf-8
import base64
def encrypt(en_str):
"""
加密:先对原字符串作base64加密,然后将加密后的字符串首尾字符对换位置,得到密文
:param en_str: 待加密明文
:return: 加密后的密文
"""
""" en_str = base64.b64encode(en_str) """
en_str = base64.b64encode(en_str.encode('utf-8')).decode('utf-8')
# print "加密后的字符串: " + en_str
en_str = en_str[-1] + en_str[1:len(en_str) - 1] + en_str[0]
# print "对换后的字符串: " + en_str
return en_str
if __name__ == '__main__':
stre = input("这里填写你想要生成密文的明文,程序会自动生成一连串的密文给你:")
en_str = encrypt(stre)
# 按照一定的密钥对字母进行“平移”
miwen = ""
for i in en_str:
if 'A' <= i <= 'W' or 'a' <= i <= 'w':
miwen += chr(ord(i)+3)
elif 'X' <= i <= 'Z' or 'x' <= i <= 'z':
miwen += chr(ord(i)-23)
else:
miwen += i
print('加密后的密文:',miwen)
# 密文转明文
# coding=utf-8
import base64
def decrypt(de_str):
"""
解密:先将密文首尾字符对换位置,然后base64解密
:param de_str: 待解密密文
:return:
"""
de_str = de_str[-1] + de_str[1:len(de_str) - 1] + de_str[0]
# print "解密前的字符串: " + de_str
de_str = base64.b64decode(de_str.encode('utf-8')).decode('utf-8')
# print "解密后的字符串: " + de_str
return de_str
if __name__ == '__main__':
mingwen = ""
en_str = input("这里填写你想要生成明文的密文,程序会自动生成一连串的明文给你:")
# 按照一定的密钥对密文中的字母进行“平移”
for i in en_str:
if 'a' <= i <= 'c' or 'A' <= i <= 'C':
mingwen += chr(ord(i)+23)
elif 'd' <= i <= 'z' or 'D' <= i <= 'Z':
mingwen += chr(ord(i)-3)
else:
mingwen += i
de_str = decrypt(mingwen)
print(de_str)
$$mingwen = ""
miwen = input()
for i in miwen:
if 'a' <= i <= 'c' or 'A' <= i <= 'C':
mingwen += chr(ord(i)+23)
elif 'd' <= i <= 'z' or 'D' <= i <= 'Z':
mingwen += chr(ord(i)-3)
else:
mingwen += i
print(mingwen)
$$null