2018-2019-2 20165221课程设计学习-week1

2018-2019-2 20165221课程设计学习-week1

目录

  • 1.任务理解与分工
  • 2.完成Python环境的搭建
  • 3.完成git和上传码云的配置
  • 4.尝试简单的Python代码编写并推到码云上
  • 5.了解熟悉几个国密算法
  • 6.学习笔记
  • 7.本周学习任务

任务理解与分工

  • 团队任务
    • 小组讨论对课程设计任务的理解:
      • 我们的题目是基于python的GMSSL的实现,和老师及小组内部讨论后,认为我们的任务就是用Python编程实现国密算法。
    • 进行任务的功能划分和分工
      • 每人在国密算法中选一个算法,弄懂基本原理,用python语言跑通,后续的修改代码和添加小功能再由小组协助完成。
    • 任务的进度安排:
      • week1:完成所有的前期准备,学习Python的一些基本语法,理解自己所选的国密算法。
      • week2:继续Python的学习,网上搜集算法相关资料,开始准备代码。
      • week3:基本实现代码跑通,开始小组讨论后续加分项。
      • week4:进入收尾工作
  • 个人任务:
    • 我选择SM3算法的实现,进度安排同上,与小组进度保持一致。

任务一:完成Python环境的搭建

  • 我选择在Windows下搭建Python的环境
  • 先到python官网下载安装包-->去配置环境变量-->path
  • 最终搭建成功后,找到存放目录,用命令行查看
    2018-2019-2 20165221课程设计学习-week1_第1张图片
  • 在Windows中打开
    2018-2019-2 20165221课程设计学习-week1_第2张图片

任务二:完成git和上传码云的配置

  • 参考学长的博客和度娘,搭建成功,并建立本地仓库,命名为20165221 / 2018-2019-2课程设计
    2018-2019-2 20165221课程设计学习-week1_第3张图片

任务三:尝试简单的Python代码编写并推到码云上

  • 使用Python编写的几个简单命令
    2018-2019-2 20165221课程设计学习-week1_第4张图片
    2018-2019-2 20165221课程设计学习-week1_第5张图片

  • 将其推到码云上
    2018-2019-2 20165221课程设计学习-week1_第6张图片
    2018-2019-2 20165221课程设计学习-week1_第7张图片
    2018-2019-2 20165221课程设计学习-week1_第8张图片

  • 完成代码量的统计
  • 使用statistics来进行代码的统计,使用方法是在.py文件存放目录中运行。
    2018-2019-2 20165221课程设计学习-week1_第9张图片
    2018-2019-2 20165221课程设计学习-week1_第10张图片

任务四:了解熟悉几个国密算法

  • 国密即:国家密码管理局认定的国产密码算法。主要有: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(数据加密标准)

五 . 学习笔记

编译和解释:
  • 编译:一次性翻译,之后不再需要源代码,类似于英文翻译
    2018-2019-2 20165221课程设计学习-week1_第11张图片

  • 解释:每次程序运行时随着翻译来执行,类似于实时的同声传译
    2018-2019-2 20165221课程设计学习-week1_第12张图片

编程语言的分类
  • 根据执行方式的不同,分为两类
    • 静态语言 使用编译执行的语言-->C/C++,Java语言
    • 脚本语言 使用解释之行的编程语言-->Python语言/JavaScript语言/PHP语言
程序的基本编写方法
  • IPO模式
    2018-2019-2 20165221课程设计学习-week1_第13张图片

Python学习笔记

  • Python的的两种编写方式:
    • 交互式: 对每个输入语句即时运行结果
    • 文件式:批量执行一组语句并运行结果
程序元素:
  • 注释:不会被计算机所执行
    • 单行注释以#开头,
    • 多行注释以'''开头,以'''结尾
      2018-2019-2 20165221课程设计学习-week1_第14张图片
  • 关联标识符与保留字
    • 关联标识符
      2018-2019-2 20165221课程设计学习-week1_第15张图片
    • 保留字
      2018-2019-2 20165221课程设计学习-week1_第16张图片
  • 输入函数:
    • <变量>=input(<提示性文字>),获得的用户输入存放在变量中,紧跟提示性文字后面出现
  • 输出函数:
    • 格式化使用方法
      2018-2019-2 20165221课程设计学习-week1_第17张图片
  • eval函数:
    2018-2019-2 20165221课程设计学习-week1_第18张图片

  • 缩进
    • 单层缩进
      2018-2019-2 20165221课程设计学习-week1_第19张图片
    • 多层缩进
      2018-2019-2 20165221课程设计学习-week1_第20张图片
  • 表达式:
    • 若字符串长度为L,则第一个字节的索引为0或-L,最后一个字节索引为L-1或-1。[0, L-1],[-L,-1]
      2018-2019-2 20165221课程设计学习-week1_第21张图片
    • 索引和切片
      2018-2019-2 20165221课程设计学习-week1_第22张图片
  • 实例分析
    • 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的学习,在同组队友的推荐下,自己在慕课上,跟着北京理工大学老师的网课在学习,收获还是有的,但自己还是要加快进度,毕竟课设时间紧,任务重.....
  • 本周最大的难点还是在彻底搞懂自己选择的国密算法,但是自己在学,困难应该不是问题。
  • 因为本周还没有完成课设代码,所以码云上的代码,都是自己找来练手的。
  • 码云链接

  • 参考资料
    • 通过git上传本地代码到码云仓库
    • git命令行的使用
    • 国密算法概述
    • python开发环境的搭建

转载于:https://www.cnblogs.com/0630tx/p/10830632.html

你可能感兴趣的:(2018-2019-2 20165221课程设计学习-week1)