2018-2019-2 20165221课程设计学习-week1
2018-2019-2 20165221课程设计学习-week1
目录
任务理解与分工
- 团队任务
- 小组讨论对课程设计任务的理解:
- 我们的题目是基于python的GMSSL的实现,和老师及小组内部讨论后,认为我们的任务就是用Python编程实现国密算法。
- 进行任务的功能划分和分工
- 每人在国密算法中选一个算法,弄懂基本原理,用python语言跑通,后续的修改代码和添加小功能再由小组协助完成。
- 任务的进度安排:
- week1:完成所有的前期准备,学习Python的一些基本语法,理解自己所选的国密算法。
- week2:继续Python的学习,网上搜集算法相关资料,开始准备代码。
- week3:基本实现代码跑通,开始小组讨论后续加分项。
- week4:进入收尾工作
- 小组讨论对课程设计任务的理解:
- 个人任务:
- 我选择SM3算法的实现,进度安排同上,与小组进度保持一致。
任务一:完成Python环境的搭建
- 我选择在Windows下搭建Python的环境
- 先到python官网下载安装包-->去配置环境变量-->path
- 最终搭建成功后,找到存放目录,用命令行查看
- 在Windows中打开
任务二:完成git和上传码云的配置
- 参考学长的博客和[度娘](https://www.jianshu.com/p/a6ac5ae5c810),搭建成功,并建立本地仓库,命名为```20165221 / 2018-2019-2课程设计``` ![](https://img2018.cnblogs.com/blog/1322987/201905/1322987-20190508105909395-542043930.png)任务三:尝试简单的Python代码编写并推到码云上
- 使用Python编写的几个简单命令 ![](https://img2018.cnblogs.com/blog/1322987/201905/1322987-20190508110018019-1996056819.png) ![](https://img2018.cnblogs.com/blog/1322987/201905/1322987-20190509171307233-935042831.png)-
将其推到码云上
-
完成代码量的统计
-
使用
statistics
来进行代码的统计,使用方法是在.py
文件存放目录中运行。
任务四:了解熟悉几个国密算法
- 国密即:国家密码管理局认定的国产密码算法。主要有:SM1,SM2,SM3,SM4.
SM1 :为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2 :为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
SM3 :消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
SM4 :无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
- 与密码学相对应的算法总结
国密算法 | 对应密码学算法 |
---|---|
SM1 | AES算法(高级加密标准) |
SM2 | ECC (椭圆加密算法) |
SM3 | MD5 (信息摘要算法) |
SM4 | DES(数据加密标准) |
五 . 学习笔记
编译和解释:
-
编译:一次性翻译,之后不再需要源代码,类似于英文翻译
-
解释:每次程序运行时随着翻译来执行,类似于实时的同声传译
编程语言的分类
- 根据执行方式的不同,分为两类
- 静态语言 使用编译执行的语言-->C/C++,Java语言
- 脚本语言 使用解释之行的编程语言-->Python语言/JavaScript语言/PHP语言
程序的基本编写方法
- IPO模式
Python学习笔记
- Python的的两种编写方式:
- 交互式: 对每个输入语句即时运行结果
- 文件式:批量执行一组语句并运行结果
程序元素:
-
注释:不会被计算机所执行
- 单行注释以
#
开头, - 多行注释以
'''
开头,以'''
结尾
- 单行注释以
-
关联标识符与保留字
- 关联标识符
- 保留字
- 关联标识符
-
输入函数:
<变量>=input(<提示性文字>)
,获得的用户输入存放在变量中,紧跟提示性文字后面出现
-
输出函数:
- 格式化使用方法
- 格式化使用方法
-
eval函数:
-
缩进
- 单层缩进
- 多层缩进
- 单层缩进
-
表达式:
- 若字符串长度为L,则第一个字节的索引为0或-L,最后一个字节索引为L-1或-1。[0, L-1],[-L,-1]
- 索引和切片
- 若字符串长度为L,则第一个字节的索引为0或-L,最后一个字节索引为L-1或-1。[0, L-1],[-L,-1]
-
实例分析
-
tHndex='python'
- tHndex[1:-2]---->'yth'
- tHndex[4]---->'o'
- tHndex[-4]---->'t'
-
val =28c
- val[0:2],表示的是28
- val[0:-1],表示取除去最后一个字符外的字符串
-
-
循环语句:for i in range (10),表示该循环执行10次。