Skip to content

Latest commit

 

History

History
215 lines (160 loc) · 8.52 KB

homework_from_cshao.md

File metadata and controls

215 lines (160 loc) · 8.52 KB

密码学作业

作业目录结构和一些其它说明

自己作业目录中的文件内容和目录结果参考下面例子

│  .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. 旷课超过1/3以上者取消考试资格,请假需要辅导员给出的正式请假条。
  2. 当周布置的作业,最迟在下周上交(上推到服务器),未及时上交者按没上交作业处理。

平时成绩=课堂签到成绩+平时作业成绩

第一次密码学作业

9/1/2026

  1. 登陆网站 “https://10.21.21.251”。注册的账号创建新的项目。项目名称为 crypt, 一定记得要添加 cshao为项目成员,且给足够高的权限(Maintainer)。
  2. 自学md格式,作业用md格式保存,文件名为“作业1.md”。该md文档要包括:
    1. 多级标题
    2. 图片
    3. 代码, 自己构想
    4. 表格

下面是一个md文档例子


# 这是一级标题
记得井号与标题内容之间的空格

## 这是二级标题

下面是一个图片链接例子

![](这里了给出图片的本地url)

URL只能写相对于本md文件的相对目录,而不能是绝对目录。

## 这还是是二级标题
代码由三个撇号(数字左面感叹号那个键)开始,以及三个撇号结束的一个块

` `` (中间没有空格)
这是代码
` `` (中间没有空格)

## 这还是是二级标题
下面是一个表格例子
 
| | |
| -: | :- |
|科目|密码学|
|班级|xxx|
|学号|xxx|
|姓名|xxx|


注意:每次作业只在根目录需要一个md文档,比如 “作业1.md”

第二次密码学作业

9/8/2026

  1. 网上搜集量子密码(Quantum Cryptography,Post-quantum cryptography)相关知识,越多越好.给出下列问题答案
    1. 量子密码能否对数据加密,如果可以如何操作?
    2. 量子密码能否对已有密码算法进行破译?
      1. 破译1024位RSA算法需要多少时间?这样的设备成本几何?
      2. 破译128位密钥的AES算法需要多少时间?这样的设备成本几何?
  2. 使用md格式保存信息,存放于作业根目录,文件名为“作业2.md”
  3. 所有资料需要给出来源信息(即URL)

第三次密码学作业

9/15/2026

  1. 自学 《中华人民共和国密码法》、《商用密码管理条例》。
  2. 网上搜索商密算法: SM1,SM2,SM3,SM4,SM7,SM9 的信息,需要列出这些算法的特性、基本功能和应用场景。
  3. 使用md格式保存信息,文件名为“作业3.md”

第四次密码学作业

9/20/2026

两个相同长度的位串m1与m2的异或结果称为它们的差分。 位串m中1的个数称为m的海明重量,简称重量。

  1. 在项目根目录下增加git忽略文件,该文见的内容可以参见 https://10.21.21.251/cshao/git-gitlab-faq/-/blob/master/doc/git-ignore.md
  2. 网上搜索DES的源代码,也可以自己实现DES源代码。
  3. 利用 DES 源代码,编程实现下面内容。
  4. 作业文档使用md格式保存信息,文件名为“作业4.md”
  5. 截图时,输出信息的第一行必须是自己的个人信息(比如学号),

统计分析: 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

LSR编程

  1. 根据教材图示,编程实现线性移位寄存器随机序列生成器。
  2. 内部状态个数由输入的连接多项式决定,可以输入起始状态。比如可以用字符串10011表示连接多项式 x^4+x+1。
  3. 撰写设计和运行结果报告,使用md格式保存信息,文件名为“作业5.md”
  4. 截图时,输出信息的第一行必须是自己的个人信息(比如学号),

第六次密码学作业

9/29/2026

随机性测试编程

  1. 网上搜集《随机性测试规范》相关资料。 查找 C,Java或其他编程语言中随机数生成器的源代码。
  2. 编程实现随机序列的
    1. 游程分布检测
    2. 自相关检测

RC4 编程

  1. 根据教材,编写RC4算法,实现输出随机序列
  2. 可视化输出、观察 I,J, K的变化规律,
  3. 利用编写的随机序列检测方法检测随机性,比如输出1000字节。

先将I,J,K数据输出到文本文件中,再使用Excel可视化数据并截图。 参见:https://meeting.tencent.com/crm/K0R41zkW2c

作业文档使用md格式保存信息,文件名为“作业6.md”

第七次密码学作业-Hash函数相关编程作业

10/13/2026

Hash函数的单向性

利用SHA-256 Hash函数实现下面要求。

创建任意一个本文文件,具体内容由自己填写。但要求该文件的hash值满足一定的条件。

  1. 找出hash值最开始的1位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
  2. 找出hash值最开始的连续2位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
  3. 找出hash值最开始的连续3位是0的 文本文件内容,并给出在寻找过程中计算hash的次数。
  4. ...

给出不超过5分种寻找情况下,可以达到的hash值最多可以是有几位连续0出现,这时的文本内容是什么,

文件查重

利用SHA-256 Hash函数实现查找本地硬盘重复文件。编程并撰写报告。 提示:

  1. 首先计算硬盘文件的Hash,并记录文件路径与Hash值的对应关系
  2. 利用具有相同Hash值的文件,内容就极其可能相同的特性,查找具有相同Hash值的文件。
  3. 可以简单比较一下具有相同Hash值的文件是否长度,部分随机内容相同,如果相同则直接输出,否则说明发生了碰撞。
  4. 注意保护个人隐私。
  5. 截图时,输出信息的第一行必须是自己的个人信息(比如学号),

编程语言不限,作业文档使用md格式保存信息,文件名为“作业7.md”