首页 > 其他分享 >《密码系统设计》第二周

《密码系统设计》第二周

时间:2024-09-15 12:45:48浏览次数:11  
标签:编码 加密 AI 解密 密码 算法 第二周 密钥 设计

第二周预习报告

学习内容

AI 对学习内容的总结(1分)

要求

  • 让AI阅读学习内容并进行总结

总结

1. Head First C 嗨翻 C 语言 第8章

  1. 函数指针:学习如何声明和使用函数指针,这是C语言中一个强大的特性,允许将函数作为参数传递给其他函数。
  2. 返回函数指针:了解如何从函数中返回函数指针,这在创建回调函数时非常有用。
  3. 动态内存分配:深入探讨如何在堆上分配和释放内存,这是管理大型数据结构和复杂程序中资源的关键。
  4. 指针和数组:进一步理解指针和数组之间的关系,以及如何通过指针操作数组。
  5. 指针的指针:学习如何使用指向指针的指针,这在处理多维数组和复杂的数据结构时非常有用。
  6. 结构体和联合:介绍如何定义和使用结构体和联合,这些是C语言中创建复杂数据类型的方式。
  7. 递归函数:探讨如何编写递归函数,这是一种通过函数自身调用来解决问题的方法。
  8. 错误处理:学习如何在函数中进行错误检查和处理,以确保程序的健壮性。
  9. 标准库函数:介绍一些常用的标准库函数,如mallocfreememcpy等,这些函数在C语言编程中非常重要。
  10. 函数的高级用法:可能还会包括一些函数的高级用法,如变长参数列表的使用。

2. 《Windows C/C++加密解密实战》3.4.4

1. SM4算法概述

  • 定义:SM4是一种分组密码算法,适用于安全通信。
  • 特点:易于在软件和硬件上实现,运算速度快。
  • 结构:采用非平衡Feistel结构,明文和密钥长度均为128比特。
  • 迭代:加密和解密算法都采用32轮非线性迭代结构,解密时轮密钥使用顺序与加密相反。

2. 密钥

  • 长度:密钥长度为128比特(16字节)。
  • 轮密钥:由加密密钥通过密钥扩展算法生成,共32个轮密钥。

3. 密钥扩展算法

  • 过程:从128位加密密钥生成32个32位的轮密钥。
  • 参数:使用系统参数FK和固定参数CK,这些参数在密钥扩展中使用。

4. 轮函数

  • 组成:轮函数F由非线性变换τ和线性变换L复合而成。
  • 非线性变换τ:由4个S盒并行组成。
  • 线性变换L:包括异或运算和循环左移。

5. 加密算法

  • 过程:包括32次迭代运算和一次反序变换。
  • 输入:128位明文。
  • 输出:128位密文。

6. 解密算法

  • 过程:与加密算法结构相同,但轮密钥使用顺序相反

7. SM4算法的实现

  • 示例:提供了16字节数据的SM4加解密函数实现。
  • 扩展:介绍了如何支持任意长度数据的加解密,包括ECB、CBC、CFB和OFB四种工作模式。

8. 检测函数

  • 自检:使用标准数据进行自检,确保算法实现正确。

9. 短块加密

  • 问题:讨论了如何处理非16字节倍数的数据,即短块加密问题。

总结

通过本节的学习,可以了解到SM4算法的基本原理、实现方法以及如何在C/C++中进行加解密操作。SM4算法因其高效性和安全性,在需要数据加密的应用中具有重要价值。

3. 《Windows C/C++加密解密实战》5.3.7

  1. ASN.1文法描述:ASN.1用于描述数据结构,包括原子类型和结构类型。数据类型可以是通用的、应用特定的、私有的或上下文特定的。每种类型都有一个唯一的类型标识(Tag)。
  2. 编码规则
  • BER:基本编码规则,允许数据自包含结构信息,使用TLV(Tag, Length, Value)三元组进行编码。BER支持定长和不定长编码方式。
    - DER:区分编码规则,是BER的子集,用于确保数据的唯一编码。DER编码是唯一的,适合安全技术应用,如电子商务系统。
    - CER:规范编码规则,主要用于早期的X.509证书。
    - PER:打包编码规则,用于压缩数据以减少编码后的数据大小。
  1. 数据类型标识
  • 通用类(Universal):所有应用中定义相同。
  • 应用类(Application):只为某一种应用定义。
  • 私有类(Private):为特定企业或公司定义。
  • 上下文说明类(Context Specific):为特定类型定义。
  1. 派生数据类型
  • 显式派生法:改变数据类型的编码,使用新的类型标识。
  • 隐式派生法:改变数据类型的标识值,但不改变编码方式。
  1. 数据类型的ASN.1描述和DER编码
  • 隐式派生类:改变类型标识值以区分相同类型的数据成员。
  • 显式派生类型:不改变数据类型,但使用新的类型标识。
  • BIT STRING:用于编码任意比特串,如数字签名结果。
  • IA5STRING:用于编码ASCII码字符组成的字符串。
  • INTEGER:用于编码任意整数。
  • OBJECT IDENTIFIER:用于标识算法或属性类型。
  • OCTET STRING:用于编码任意字节串,如摘要数据。
  • SEQUENCE:用于定义有序且成员数量固定的结构。

总结

每种数据类型都有其特定的ASN.1描述和DER编码规则,这些规则确保了数据在不同系统和网络中的一致性和互操作性。DER由于其唯一性和适合安全应用的特性,被广泛认为是电子商务和安全系统中的首选编码规则。

对 AI 总结的反思与补充(2分)

要求

  • AI总结的问题
  • 自己的补充

反思与补充

1. 反思

在学习中利用AI助手对知识点进行总结,可以帮助我们对知识点进行梳理,有助于我们更全面地理解、掌握学习内容。同时,AI助手还能帮助我们对不理解的知识点展开更为详细的解释,确保我们能对所学内容清晰掌握。

2. 补充

1. Head First C 嗨翻 C 语言 第8章

  • 函数指针在C语言中非常有用,但它们也增加了代码的复杂性。理解它们如何在底层工作,以及如何安全地使用它们,对于编写健壮的程序至关重要。
  • 指针的指针在处理复杂的数据结构时非常有用,但它们也增加了代码的复杂度。在实际编程中,它们通常用于实现数据结构,如链表、树等。
  • 递归是一种强大的编程技术,但它也可能导致栈溢出等问题。理解递归的工作原理和如何正确使用它,对于解决复杂问题非常重要。

2. 《Windows C/C++加密解密实战》3.4.4

  • 理论与实践结合:虽然书中提供了SM4算法的理论基础和实现示例,但实际应用中需要更多地考虑如何将理论应用到实际项目中,解决实际问题。
  • 安全性考量:在实现加密算法时,除了算法本身的安全性,还需要考虑实现的安全性,比如密钥管理、侧信道攻击防护等。

3. 《Windows C/C++加密解密实战》5.3.7

  • 实际应用场景的重要性
    学习ASN.1和编码规则不仅仅是理论上的,更重要的是理解它们在实际应用中的作用。例如,在安全协议、数据传输、分布式系统中,ASN.1和DER/BER的使用确保了数据的一致性和安全性。
  • 编码效率
    虽然DER提供了一种唯一的编码方式,适合安全应用,但它可能不是最高效的编码方式。在某些情况下,PER或BER的压缩特性可能更适合带宽有限的环境。

学习思维导图(2分)

要求

思维导图

1. Head First C 嗨翻 C 语言 第8章


2. 《Windows C/C++加密解密实战》3.4.4


3. 《Windows C/C++加密解密实战》5.3.7


基于 AI 的学习(2分)

要求

  • 至少找到自己理解不是太好 2 个概念,让 AI 对自己进行苏格拉底提问
  • 参考下面提示语或者使用 AI Agent
    提示词:“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
  1. 核心是要求AI工具:“请你以苏格拉底的方式对我进行提问”
  2. 然后AI工具就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
  3. 如果你觉得差不多了,可以先问问AI工具:“针对我XXX知识点,我理解了吗?”
  4. AI工具会给出它的判断,如果你也觉得自己想清楚了,可以最后问AI工具:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。

学习内容

1. 针对SM4算法进行提问




2. 针对编码规则进行提问


作业提交要求(1分)

  1. 提交Markdown 文件,文档命名“学号姓名《密码系统设计》.md”
  2. 提交Markdown 文件转为 PDF,文档命名“学号姓名《密码系统设计》第 X 周.pdf”
  3. 提交代码托管链接(可选):学号姓名 gitee(github) 链接
  4. 内容质量高有加分

参考资料

标签:编码,加密,AI,解密,密码,算法,第二周,密钥,设计
From: https://www.cnblogs.com/RoyWang1108/p/18415153

相关文章

  • 【开题报告】基于django+vue基于Web的电影推荐与点评系统(论文+源码) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,在线娱乐已成为人们日常生活中不可或缺的一部分,其中网络电影观看尤为普及。然而,面对海量的电影资源,用户往往难以......
  • springboot+vue音乐微信小程序网页前9【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,微信小程序作为一种轻量级的应用形态,凭借其无需下载、即用即走的特点,迅速渗透到人们日常生活的方方面面。音乐作为人们休闲娱乐、情感表达的重要方式,其数字化、移动化趋势日益显著。然而,市场上虽不乏各类......
  • springboot+vue学生综合信息管理系统【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着高等教育的快速发展,学生数量激增,传统的手工或简单信息化管理方式已难以满足当前学生信息管理的复杂需求。学生综合信息管理系统作为高校信息化建设的重要组成部分,旨在通过集成化、智能化的手段,实现对学生信息、教师资源、课程安排......
  • springboot+vue疫情防控系统的设计与实现【程序+论文+开题】计算机毕业设计
    系统程序文件列表开题报告内容研究背景在全球化背景下,人员流动日益频繁,突发公共卫生事件如新冠疫情的爆发,对全球公共卫生安全构成了严峻挑战。传统的手工疫情监测与管理方式已难以满足高效、精准、实时的防控需求。因此,设计并实现一套智能化、自动化的疫情防控系统显得尤为......
  • 高级java每日一道面试题-2024年9月12日-架构篇[DDD领域驱动篇]-如何使用领域驱动设计(D
    如果有遗漏,评论区告诉我进行补充面试官:如何使用领域驱动设计(DDD)中的事务脚本模式?我回答:在Java高级面试中,讨论如何使用领域驱动设计(DDD)中的事务脚本模式是一个很好的话题,因为它不仅考察了面试者对DDD原则的理解,还检验了其在实际项目中应用这些原则的能力。事务脚本模......
  • jsp城市路边停车收费系统的设计与实现9h2w9
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,车位信息,车位预约,入场信息,出场信息开题报告内容一、项目背景与意义随着城市化进程的加速,城市路边停车管理成为城市交通管理中的一大难题。......
  • Arduino Uno控制LED灯闪烁设计方案
        以下是使用ArduinoUno控制LED灯闪烁的设计方案: 一、硬件准备1. ArduinoUno开发板。2. 一个LED灯。3. 220Ω电阻(用于限流,保护LED和Arduino引脚)。4. 面包板。5. 若干杜邦线。                       ......
  • 【开题报告】基于django+vue基于Web的小型社区配送系统(论文+源码) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着电子商务的蓬勃发展和消费者对即时配送服务需求的日益增长,小型社区配送系统逐渐成为连接商家与居民的重要桥梁。传统社区配送往往面临......
  • 计算机毕业设计必看必学!! 91511 篮球馆服务系统,原创定制程序, java、PHP、python、小
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,篮球馆服务系统当然也不能排除在外。篮球馆服务系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Springboot技术构建的一个管理系统。整个开发过......
  • 计算机毕业设计必看必学!! 91382 电子元器件管理与销售系统,原创定制程序, java、PHP、
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,电子元器件管理与销售系统当然也不能排除在外。电子元器件管理与销售系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用 SSM技术构建的一个管理平......