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]
    • 索引和切片
  • 实例分析

    • 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次。

六 .本周学习总结

- 本周自己只是做了一些基础的学习,完成了本次课设的所有前期准备工作 - 至于python的学习,在同组队友的推荐下,自己在慕课上,跟着北京理工大学老师的[**网课**](https://www.icourse163.org/course/BIT-268001)在学习,收获还是有的,但自己还是要加快进度,毕竟课设时间紧,任务重..... - 本周最大的难点还是在彻底搞懂自己选择的国密算法,但是自己在学,困难应该不是问题。 - 因为本周还没有完成课设代码,所以码云上的代码,都是自己找来练手的。 - [**码云链接**](https://gitee.com/tx0630/course_design_for_201810192)
原文地址:https://www.cnblogs.com/0630tx/p/10830632.html