自己作业目录中的文件内容和目录结果参考下面例子
│ .gitignore
│ homework_from_cshao.md
│ README.md
│ 作业1.md
│ 作业2.md
│ 作业3.md
│ 作业4.md
│ 作业5.md
│ 作业6.md
│ 作业7.md
│ 作业8.md
│ 作业9.md
│
├─from_cshao
│ check.md
│ Comments.md
│
├─imgs
│ 3_1.png
│ 3_10.png
│ 3_11.png
│ 3_2.png
│ 3_3.png
│ 3_4.png
│
│
├─作业1代码
│ a.c
│ b.c
│
├─作业2代码
│ a.java
│ b.java
│
└─
其中:
.gitignore是忽略文件homework_from_cshao.md是本文件,由老师设置,不要随便修改README.md该文件会在gitlab项目中自动显示,是自述文件。 最终会包含所有作业内容作业x.md每次的作业管理文件,后面的x按照作业次数递增。建议用阿拉伯数字,不要用汉字。 每次作业必须有一个对应的md格式文档,编程作业也不例外。 一般作业中,这个md文档存入作业内容,对于编程作业这个文档类似于软件的设计文档。from_cshao目录,由老师创建,不要随便修改。其中可能包含时间标签文件check.md,评语文件comments.md或者其它文件。imgs目录,存放md文件中使用在图片,该目录名称可由自己决定。这个目录下面可以自由决定是否使用多级目录,比如为每次作业的图片再创建二组目录。作业x代码目录,对于编程作业,所有程序源代码存放在这个目录中。这个目录下面可以自由决定是否使用多级目录。
不会用git、gitlab的同学参考下面视频 https://meeting.tencent.com/crm/2pDL0a52f5 如何注册,创建项目 https://meeting.tencent.com/crm/l6MdyaPN4d 补充知识,包含 git 忽略文件 ,md操作 https://meeting.tencent.com/crm/KwMPjXQNdb 作业目录组织
从2026年9月7号开始,服务器会在每周一,周四下午5点左右开启(特殊情况除外)。 开启服务器后,服务器会自动在当晚1点(即第二天凌晨1点)自动关闭。 请大家在服务器开启时间段内及时上推作业。
判断服务器是否开放的最简单方法就是访问一下页面 http://10.21.21.251.是否可以正常打开。
- 旷课超过1/3以上者取消考试资格,请假需要辅导员给出的正式请假条。
- 当周布置的作业,最迟在下周上交(上推到服务器),未及时上交者按没上交作业处理。
平时成绩=课堂签到成绩+平时作业成绩
9/1/2026
- 登陆网站 “https://10.21.21.251”。注册的账号创建新的项目。项目名称为 crypt, 一定记得要添加 cshao为项目成员,且给足够高的权限(Maintainer)。
- 自学md格式,作业用md格式保存,文件名为“作业1.md”。该md文档要包括:
- 多级标题
- 图片
- 代码, 自己构想
- 表格
下面是一个md文档例子
# 这是一级标题
记得井号与标题内容之间的空格
## 这是二级标题
下面是一个图片链接例子

URL只能写相对于本md文件的相对目录,而不能是绝对目录。
## 这还是是二级标题
代码由三个撇号(数字左面感叹号那个键)开始,以及三个撇号结束的一个块
` `` (中间没有空格)
这是代码
` `` (中间没有空格)
## 这还是是二级标题
下面是一个表格例子
| | |
| -: | :- |
|科目|密码学|
|班级|xxx|
|学号|xxx|
|姓名|xxx|
注意:每次作业只在根目录需要一个md文档,比如 “作业1.md”
9/8/2026
- 网上搜集量子密码(Quantum Cryptography,Post-quantum cryptography)相关知识,越多越好.给出下列问题答案
- 量子密码能否对数据加密,如果可以如何操作?
- 量子密码能否对已有密码算法进行破译?
- 破译1024位RSA算法需要多少时间?这样的设备成本几何?
- 破译128位密钥的AES算法需要多少时间?这样的设备成本几何?
- 使用md格式保存信息,存放于作业根目录,文件名为“作业2.md”
- 所有资料需要给出来源信息(即URL)
9/15/2026
- 自学 《中华人民共和国密码法》、《商用密码管理条例》。
- 网上搜索商密算法: SM1,SM2,SM3,SM4,SM7,SM9 的信息,需要列出这些算法的特性、基本功能和应用场景。
- 使用md格式保存信息,文件名为“作业3.md”
9/20/2026
两个相同长度的位串m1与m2的异或结果称为它们的差分。 位串m中1的个数称为m的海明重量,简称重量。
- 在项目根目录下增加git忽略文件,该文见的内容可以参见 https://10.21.21.251/cshao/git-gitlab-faq/-/blob/master/doc/git-ignore.md
- 网上搜索DES的源代码,也可以自己实现DES源代码。
- 利用 DES 源代码,编程实现下面内容。
- 作业文档使用md格式保存信息,文件名为“作业4.md”
- 截图时,输出信息的第一行必须是自己的个人信息(比如学号),
统计分析: A: 在密钥k固定的情况下,两个分组 m1 ,m2 的差分海明重量分别是1,2,3,,,,64的情况下,m1,m2对应DES密文C1,C2的海明重量情况。 B: 在明文m固定的情况下,两个密钥 k1 ,k2 的差分海明重量分别是1,2,3,,,,64的情况下,m 对应DES密文C1,C2的海明重量情况。
对于A,B两种情况下,需要分析(分别给出)第1轮后,第2轮后,,,,第16轮后的结果。
另外,为了公允起见,每种情况下可以多进行几组,然后求平均值。
注意:一定要在项目根目录下添加git忽略文件,不同语言的忽略文件模板下载 : https://10.21.21.251/cshao/gitignore 或网上搜索
9/22/2026
- 根据教材图示,编程实现线性移位寄存器随机序列生成器。
- 内部状态个数由输入的连接多项式决定,可以输入起始状态。比如可以用字符串10011表示连接多项式 x^4+x+1。
- 撰写设计和运行结果报告,使用md格式保存信息,文件名为“作业5.md”
- 截图时,输出信息的第一行必须是自己的个人信息(比如学号),
9/29/2026
- 网上搜集《随机性测试规范》相关资料。 查找 C,Java或其他编程语言中随机数生成器的源代码。
- 编程实现随机序列的
- 游程分布检测
- 自相关检测
- 根据教材,编写RC4算法,实现输出随机序列
- 可视化输出、观察 I,J, K的变化规律,
- 利用编写的随机序列检测方法检测随机性,比如输出1000字节。
先将I,J,K数据输出到文本文件中,再使用Excel可视化数据并截图。 参见:https://meeting.tencent.com/crm/K0R41zkW2c
作业文档使用md格式保存信息,文件名为“作业6.md”
10/13/2026
利用SHA-256 Hash函数实现下面要求。
创建任意一个本文文件,具体内容由自己填写。但要求该文件的hash值满足一定的条件。
- 找出hash值最开始的1位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
- 找出hash值最开始的连续2位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
- 找出hash值最开始的连续3位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
- ...
给出不超过5分种寻找情况下,可以达到的hash值最多可以是有几位连续0出现,这时的文本内容是什么,
利用SHA-256 Hash函数实现查找本地硬盘重复文件。编程并撰写报告。 提示:
- 首先计算硬盘文件的Hash,并记录文件路径与Hash值的对应关系
- 利用具有相同Hash值的文件,内容就极其可能相同的特性,查找具有相同Hash值的文件。
- 可以简单比较一下具有相同Hash值的文件是否长度,部分随机内容相同,如果相同则直接输出,否则说明发生了碰撞。
- 注意保护个人隐私。
- 截图时,输出信息的第一行必须是自己的个人信息(比如学号),
编程语言不限,作业文档使用md格式保存信息,文件名为“作业7.md”