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

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

目录


一 . 深入了解SM3算法

#### 算法概述: - 对长度为l(l < 2^64)比特的消息m, SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256比特。 #### 算法过程: - **填充信息**:假设消息m 的长度为l 比特. - 首先将比特“1”添加到消息的末尾, - 再添加k 个"0",k是满足```l+1+k≡448mod512``` 的最小的非负整数。 - 然后再添加一个64位比特串,该比特串是长度l的二进制表示。填充后的消息m的比特长度为512的倍数。

  • 先在原消息串后加1

  • 接着填充k个0,25+k≡448mod512,得K/min=423,

  • 将m字符串顺序重复排列64bit,添加在K个0比特后面

  • 迭代压缩

    • 迭代过程

      • 接上例,此时m'=24+1+423+64=512bit,即m'自成一组即可。
      • i值从0到n-1,即0到0,i值就取为0.
      • 即可进行迭代,运行压缩函数CF()
    • 消息扩展

      • 将消息分组进行扩展,得到132个字,方法如下:
      • j的数值从16取到67,当j=16时,可得到Wj=((W0)32比特异或(W7)32比特异或(W13左移15位))32比特异或(W3左移7位)32比特异或(W10)
      • 再让j从0取到63,让Wj与Wj+4进行32比特异或运算得到Wj'
    • 压缩函数

    • 杂凑值

      • 即可得到256比特的杂凑数值,即为y=ABCDEFGH

二 . Python学习笔记-turtle库

#### Python蟒蛇的绘制 - 代码如下: ``` import turtle turtle.setup(300,300,0,100) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pencolor(25) turtle.prncolor("black") turtle.seth(-40) for i in range(4): turtle.circle(40,80) turtle.circle(40, 80) turtle.circle(40,80/2) turtle.fd(40) turtle.circle(16,180) turtle.fd(40 * 2/3) turtle.done ``` ![](https://img2018.cnblogs.com/blog/1322987/201905/1322987-20190514220052802-371559462.png)

Python蟒蛇代码实例分析

  • 库引用
    • 调用库import <库名>
      • import turtle
    • 调用库中的函数<库名称>.<库中函数名>(<函数具体参数>)
      • turtle.setup(300,300,0,100)
  • 保留字的书写方式:
    • from turtle import*
    • 后面的书写时都可省略turtle.
from turtle import*
setup(300,300,0,100)
penup()
fd(-250)
pendown()
pensize(25)
pencolor("black")
seth(-40)
for i in range(4):
   circle(40,80)
   circle(40, 80)
circle(40,80/2)
fd(40)
circle(16,180)
fd(40 * 2/3)
done()
  • 两种书写方式的比较:

  • 其他书写方式:由importas保留字共同完成

import turtle as t
t.setup(300,300,0,100)
t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("black")
t.seth(-40)
for i in range(4):
    t.circle(40,80)
    t.circle(40, 80)
t.circle(40,80/2)
t.fd(40)
t.circle(16,180)
t.fd(40 * 2/3)
t.done

turtle绘图工具的使用

  • turtle.setup(width,hight,startx,starty)

  • turtle的空间坐标体系,以窗口的正中心为原点和海龟运动的起始点

  • turtle.goto(x,y)

  • turtle的相对坐标体系

    • turtle.bk(d):表示按海龟当前的反方向运动
    • turtle.fd(d):表示按海龟当前的正方向运动
    • turtle.circle(r,angle):表示按照海龟当前方向的左侧以曲线运动
  • turtle的角度坐标体系

    • turtle.seth(angle)

    • turtle.left(angle)/turtle.right(angle)

  • RGB色彩模式

    • 通常默认采用小数值,也可切换成整数值模式使用
    • turtle.colormode(mode)
      • 1.0: RGB小数值模式
      • 255:RGB整数值模式
  • 画笔控制函数:

    • turtle.pu()-->画笔抬起,海龟在飞行,不在画板上形成图案
    • turtle.pd()-->画笔落下,海龟在爬行,在画板上形成图案
    • turtle.pensize()-->画笔的宽度
    • turtle.pencolor()-->画笔颜色,为海龟涂装。
      • 颜色字符串-->turtle.pencolor("purple")
      • RGB的小数值形式-->turtle.pencolor(0.63,0.13,0.94)
      • RGB的元组值-->turtle.pencolor((0.63,0.13,0.94)
  • turtle运动控制函数

    • turtle.circle(r,extent),默认圆心在海龟的左侧,为负值时则在海龟的右侧

  • range()函数

    • 作用是:产生计数循环
    • 用法:
      • range(N),产生0到N-1的整数序列,共N个
      • range(5)---> 0,1,2,3,4
      • range(M,N),产生M到N-1的整数序列,共N-M个
      • range(2,5)---> 2,3,4
  • 自己动手尝试

    • 利用前面学到的函数,编写一个可以写出自己名字大写首字母的简单Python程序
import turtle as t
t.setup(300,300,300,300)
t.pensize(15)
t.pencolor("red")
t.seth(0)
t.fd(40)
t.pu()
t.fd(-20)
t.pd()
t.seth(-90)
t.fd(60)
t.pu()
t.fd(-60)
t.seth(0)
t.fd(50)
t.seth(-60)
t.pd()
t.fd(69.28)
t.pu()
t.seth(90)
t.fd(60)
t.seth(-120)
t.pd()
t.fd(69.28)
t.done()

  • 运行效果如图:

  • 完美!!!


三 . 每种编程语言的具体分析

- **C语言** - 学习内容:指针,内存,数据类型 - 语言本质:理解计算机的系统结构 - 解决的问题:性能问题
  • Java语言

    • 学习内容:对象,跨平台,运行时
    • 语言本质:理解主客体之间的关系
    • 适用对象:软件类专业
  • C++语言

    • 学习内容:对象,继承,多态
    • 语言本质:理解主客体之间的关系
    • 解决问题:大规模的程序问题
  • Python语言

    • 学习内容:编程逻辑,第三方阵
    • 语言本质:理解问题的求解
    • 适用对象:所有的专业
  • 编程语言的种类发展

    • 机器语言:代码直接执行,与CPU的型号有关
    • 汇编语言:有助记符,汇编器,与CPU的型号有关
    • 高级语言:接近自然语言,编译器,与CPU的型号无关
    • 超级语言:粘性整合已有的程序,具备庞大的计算生态

四 . 本周学习总结

- 初步了解了SM3算法的算法流程和算法元素
  • 学习了Python中的turtle库绘图工具的使用
  • 了解了几种流行的编程语言的区别与联系
  • 了解了编程语言的种类发展
  • 个人进度与小组进度是一致的,有序进行

五 . 代码链接

- [代码链接](https://gitee.com/tx0630/course_design_for_201810192/commit/fa7b101bf8b67018bf9e375097fb45304c36b5c3) ![](https://img2018.cnblogs.com/blog/1322987/201905/1322987-20190516220056660-1623494726.png)

参考资料

posted @ 2019-05-15 11:41  呼噜噜。。  阅读(323)  评论(0编辑  收藏  举报