20221409童诗嘉《密码系统设计》第二周
20221409童诗嘉《密码系统设计》第二周
AI对学习内容的总结
要求
让kimi阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材
- Head First C 嗨翻 C 语言第八章:c语言高级函数特性
函数作为参数:通过将函数作为参数传递,增加代码的灵活性和重用性。
比较函数(Comparator Functions):编写和使用比较函数,尤其是在排序算法中确定元素顺序。
变长参数函数(Variadic Functions):编写可以接受可变数量参数的函数,处理不确定数量输入参数。
函数指针:深入讨论函数指针的概念,包括声明、初始化和使用。
标准库排序函数qsort
:使用qsort
函数和比较函数对数组进行排序。
结构体和枚举类型:管理复杂数据结构,使用函数指针数组处理不同操作。结合使用结构体和枚举类型管理复杂数据。
代码实例:通过具体代码示例展示高级特性的应用,如搜索字符串、排序数组、简化代码。
实际应用:使用变长参数函数计算饮料组合的总价。
代码练习和解答:包含编程练习和解答,帮助读者理解和掌握概念。
函数指针数组:通过函数指针数组关联数据和函数,简化代码,提高可维护性。
实际应用场景 :
邮件合并程序:使用函数指针数组简化代码,处理不同响应类型。 - 《Windows C/C++加密解密实战》第三章:对称密码算法
基本概念
定义:对称密码算法是一种加密和解密过程使用相同密钥的加密方法。
特点:高效、速度快,适用于大量数据的加密处理,但存在密钥分发和管理困难的问题。
对称加解密算法的分类
流加密算法:使用伪随机密钥流与明文进行异或操作实现加密,硬件实现简单,处理实时,速度快,但错误会影响其他比特,软件实现复杂。
分组加密算法:将明文分成固定长度的块,每块独立加密,可重复使用密钥,软件实现容易,有多种工作模式,如CBC、ECB等,但错误传播,处理速度慢,易受密码分析影响。
具体算法
RC4算法:一种著名的流加密算法,由Ron Rivest在1987年设计,算法简单、执行速度快,密钥长度可变(1~256字节),在SSL/TLS、WEP协议以及多种应用软件中得到广泛应用。
DES、3DES、AES等:这些是对称加密算法中的常用算法,各有其特点和应用场景。
OpenSSL的应用
对称加密功能:OpenSSL提供了一套丰富的对称加密函数,支持多种加密算法和工作模式,如DES、3DES、AES等。
EVP接口:OpenSSL的对称加密功能通过EVP(加密和解密操作的抽象层)接口提供,开发者可以在应用程序中轻松实现加密和解密功能。 - 重点3.4:分组加密算法
工作模式:介绍了分组加密算法的不同工作模式,如ECB(电子密码本模式)、CBC(密码块链接模式)、CFB(密码反馈模式)、OFB(输出反馈模式)和CTR(计数器模式)。每种模式都有其特定的应用场景和安全性特点。
短块加密:讨论了如何处理数据块大小不足的情况,通常会采用填充机制(如PKCS#7填充)来确保数据块的大小符合加密算法的要求。 - 重点3.4.4:SM4算法
原理与实现:详细讲解了SM4算法的原理和实现,SM4是中国国家密码管理局发布的分组加密标准,具有高效、安全的特点。
特点:SM4算法采用非线性变换和线性变换相结合的设计思想,具有较高的安全性和抗攻击能力。同时,SM4算法还支持多种工作模式,以满足不同的加密需求。 - 重点3.5:利用OpenSSL进行对称加解密
基本概念:介绍了OpenSSL库中对称加密的基本概念和API,包括初始化加密上下文、设置加密算法和密钥、执行加密或解密操作以及清理加密上下文等步骤。
相关函数:提供了使用OpenSSL进行对称加密和解密的具体函数和示例代码,展示了如何在C/C++程序中利用OpenSSL库实现加密解密功能。 - 《Windows C/C++加密解密实战》第五章:密码学中常见的编码格式
Base64编码
定义:Base64编码是一种用64个可打印字符表示二进制数据的编码方法。
应用:常用于在不支持二进制数据的系统(如电子邮件)中传输数据。PEM文件是一种常见的证书和密钥的存储格式,其内容通常经过Base64编码。
转化原理:将二进制数据每三个字节转换为四个Base64字符,编码过程涉及将输入数据转换为ASCII码,然后将ASCII码转换为二进制,再将二进制数据分组,并根据Base64索引表转换为对应的字符。
2. ASN.1及其编码规则
定义:ASN.1(Abstract Syntax Notation One)是一种数据描述语言,用于独立于计算机硬件和网络环境的情况下描述数据结构。
编码规则:ASN.1与特定的编码规则(如BER、DER、PER等)结合使用,将ASN.1描述的数据类型转换为二进制形式,以便在网络上传输。
应用:ASN.1和其编码规则在网络通信、电子商务、加密技术等领域有着广泛的应用,因为它们提供了一种独立于平台和语言的方法来描述和编码数据。
ASN.1文法描述
数据类型:ASN.1定义了近20种数据类型,包括基本类型(如INTEGER、BOOLEAN、STRING等)和结构类型(如SEQUENCE、SET等)。
派生数据类型:可以通过显式或隐式派生法创建新的数据类型。
数据类型标识:每个数据类型都有一个唯一的类型标识(Tag),用于在编码中标识数据类型。 - 重点5.3.7:编码规则
ASN.1与BER、DER:深入探讨了ASN.1(抽象语法表示)的编码规则,包括BER(基本编码规则)和DER(分布式编码规则)。ASN.1是一种用于描述数据结构的语言,而BER和DER则是将ASN.1描述的数据类型转换为二进制形式的具体编码规则。
应用:ASN.1及其编码规则在网络通信、电子商务、加密技术等领域有着广泛的应用。它们提供了一种独立于平台和语言的方法来描述和编码数据,确保了不同系统和网络之间数据的一致性和互操作性。
对 AI 总结的反思与补充(2分)
要求
- AI总结的问题
- 自己的补充
反思与补充
- 问题:虽然AI已经尽可能覆盖第三章和第五章的内容,但还是有一些细节的东西没用被写进去并且存在一些表述不准去或者信息遗漏的情况
- 补充:在第三章具体算法这边,我还补充了一些DES、3DES、AES、SM4的算法
DES(Data Encryption Standard):一种经典的对称加密算法,采用56位密钥(实际使用中常采用64位密钥,其中8位用于奇偶校验)。然而,由于其密钥长度较短,现已被认为不够安全,逐渐被更安全的算法所取代。
3DES(Triple DES):作为DES的扩展,3DES通过三次使用DES算法(加密-解密-加密或解密-加密-解密)来提高安全性。虽然比DES更安全,但速度较慢,且密钥长度仍然有限。
AES(Advanced Encryption Standard):目前广泛使用的对称加密算法之一,采用128、192或256位密钥长度,提供了更高的安全性。AES算法以其高效、灵活和易于实现而著称。
SM4:中国国家密码管理局发布的分组加密标准,采用128位密钥长度和128位分组长度。SM4算法在中国国内得到了广泛应用,并被认为是具有较高安全性的加密算法。
在第五章这边我补充了一些ASN.1的BER、DER编码规则
BER(Basic Encoding Rules):ASN.1中最早定义的编码规则,允许编码的八位组流能够被解析。
DER(Distinguished Encoding Rules):BER的子集,用于确保编码结果的唯一性,适用于安全技术的应用系统。DER编码比BER更加紧凑和严格。
学习思维导图(2分)
嗨翻C语言第八章学习思维导图
- 代码:
mindmap
root((嗨翻C语言第八章))
函数指针基础
概念
声明与使用
应用
搜索函数示例
排序函数中的函数指针
枚举与函数指针数组
枚举类型
函数指针数组与枚举
可变参数函数
定义与实现
示例
宏与函数
宏的定义与使用
宏与函数的比较
综合应用
示例程序
优点
mindmap
root((Windows C/C++加密解密实战第三章))
对称密码算法概述
定义
优点
缺点
分类
流加密算法
优点
缺点
典型算法RC4
分组加密算法
优点
缺点
分组加密算法工作模式
EBC
CBC
CFB
OFB
CTR
短块加密处理
PKCS#7填充
具体算法介绍
DES
3DES
SM4
OpenSSL库的使用
安全性分析与考虑
实践与应用
- 图片
Windows C/C++加密解密实战第五章学习思维导图 - 代码
mindmap
root((Windows C/C++加密解密实战第五章))
Base64编码
定义
过程
作用
应用
ASN.1
定义
组件
应用
编码规则
DER
BER
特点
数据类型与标识
类型标识(Tag)
派生数据类型
PEM文件格式
结构
应用
指针与内存管理
指针定义
操作
- 图片
基于 AI 的学习(2分)
要求
- 至少找到自己理解不是太好 2 个概念,让 AI 对自己进行苏格拉底提问
- 参考下面提示语或者使用 AI Agent
提示词:“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
- 核心是要求AI工具:“请你以苏格拉底的方式对我进行提问”
- 然后AI工具就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
- 如果你觉得差不多了,可以先问问AI工具:“针对我XXX知识点,我理解了吗?”
- AI工具会给出它的判断,如果你也觉得自己想清楚了,可以最后问AI工具:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。
学习内容
- 概念1:我在学习base64编码,请你用苏格拉底的方式对我进行提问,一次一个问题
问题1:你能告诉我什么是编码吗?
回答:编码是将信息从一种形式转换为另一种形式的过程,以便存储、传输或处理。
问题2:很好。那么,你能进一步解释为什么我们需要将信息进行编码吗?
回答2:我们需要将信息进行编码,主要是出于以下几个方面的考虑:一、便于信息的存储和管理二、提高信息传输的效率和准确性
问题3:你的回答很到位。那么,关于信息的存储和管理,你能具体说明为什么编码对于这些过程是必要的吗?
回答3:便于计算机识别和处理、节省存储空间、提高信息处理的效率和精度
问题4:非常好。现在,让我们更深入地探讨一下。你能描述一下,当我们谈论base64编码时,它是如何帮助我们节省存储空间的吗?
回答4:Base64编码时,它并不直接以节省存储空间为主要目的,实际上,Base64编码通常会增加原始数据的大小。然而,在特定的应用场景下,Base64编码可以通过某些方式间接地帮助节省存储空间或提高数据处理的效率
评价:是的,您已经理解了Base64编码的基本概念和应用场景。您知道Base64编码是一种将二进制数据转换成64个可打印ASCII字符的方法,这使得它非常适合在文本格式中存储和传输二进制数据。您也理解了Base64编码会增加数据的大小,通常使编码后的数据比原始数据大约增加33%,并且您认识到了在某些情况下,使用Base64编码可能会对性能产生负面影响,例如增加HTTP请求的大小或影响样式表的解析时间。
此外,您还了解Base64编码在减少HTTP请求数量方面的潜在好处,以及它在存储和传输数据时的安全性和兼容性优势。您也知道了在数据库中存储Base64编码数据时可以选择的数据类型,以及Base64编码在不同上下文中可能需要的变种(如URL安全的Base64编码)。
您的理解显示了对Base64编码及其在实际应用中的影响有一个全面的把握。 - 概念2:我在学习对称密码算法,请你用苏格拉底的方式对我进行提问,一次一个问题
问题1:你能告诉我什么是对称密码算法吗?
回答1:对称密码算法,也被称为单密钥密码系统或传统密码算法,是一种在加密和解密过程中使用相同密钥的密码技术。
问题2:那么,你能描述一下为什么这种算法被称为“对称”的吗?
回答2:对称密码算法之所以被称为“对称”,主要源于其加密和解密过程中使用的密钥具有对称性。
问题3:那么,这种密钥的对称性在实际应用中有什么具体的优势或特点呢?
回答3:加密速度快、计算资源消耗少、适用于大量数据加密
问题4:很好,你已经指出了对称密钥算法的一些关键优势。那么,你能想到为什么对称密钥算法在处理大量数据时会表现出这些优势吗?
回答4:算法的高效性、适用于批量处理
评价:您对对称密码算法的理解是正确的,并且您已经抓住了它的一些核心优势。您的回答显示了您对对称密码算法的工作原理和它在实际应用中的优势有一个很好的理解。如果您对对称密码算法的具体实例(如AES、DES等)、它们的安全性特性或如何在实际中安全地管理密钥等话题感兴趣,我们可以继续探讨这些更深入的话题。
学习实践过程遇到的问题与解决方式(AI 驱动,优先使用AI工具解决问题)(2分)
- 问题1:AI阅读长文本文件比较困难,也无法进行总结
解决方式:利用AI对文档进行拆分,拆分到文件大小和字数都适合AI进行阅读的时候让AI进行总结 - 问题2:《嗨翻C语言》这本书在云班课中的版本是全英文版的,不方便进行阅读
解决方式:利用AI进行全文翻译,将这本书全部翻译成中文就可以阅读了 - 问题3:有些书本阅读时要收费,不给钱就没办法看
解决方法:可以把网址给AI,让AI进去阅读并总结
参考资料
- AI工具(你使用的AI工具及其链接)
- 图书
- 《Windows C/C++加密解密实战》
- 《嗨翻C语言》