2018-2019-2 20165221课程设计学习-week2
目录
- 深入了解SM3算法
- Python学习笔记-turtle库
每种语言具体分析
- 本周学习总结
码云链接
一 . 深入了解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
比特后面
- 迭代压缩
二 . 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
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()
- 其他书写方式:由
import
与as
保留字共同完成
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的角度坐标体系
- 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运动控制函数
- 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库绘图工具的使用
- 了解了几种流行的编程语言的区别与联系
- 了解了编程语言的种类发展
个人进度与小组进度是一致的,有序进行
五 . 代码链接
参考资料
通过git上传本地代码到码云仓库
- git命令行的使用
- 国密算法概述
- python开发环境的搭建
SM3国密算法详解