自制压缩加密程序学习笔记
自制压缩加密程序学习笔记
1. 压缩(Compression)
原理
压缩的目的是减少数据的存储空间或传输带宽。通过去掉冗余信息,压缩算法可以将文件的大小显著减小。
类型
- 无损压缩:在这种方法中,压缩后可以完全还原原始数据。例如 ZIP、PNG 等格式。处理过程中不会丢失任何信息。
- 有损压缩:这种方法会丢弃一些不重要的信息,以达到更高的压缩比。例如 JPEG 图像和 MP3 音频。
常见算法
- Huffman 编码:基于字符频率生成固定长度或变长的二进制编码,频繁出现的字符使用较短的编码,从而达到压缩效果。
- LZ78 和 LZW:这些算法通过查找重复的字符串模式并用短代码替换它们来实现有效压缩。
示例
假设有一个字符串 “AAAAABBBCCDAA”:
- 无损压缩可能将其压缩为 “5A3B2C1D2A”,表示5个A,3个B,2个C,1个D,2个A。
2. 加密(Encryption)
原理
加密的目的是保护数据的机密性,使只有被授权的用户才能读取数据。加密算法通过某种方式改变数据,使得未授权的人无法理解。
类型
- 对称加密:加密和解密都使用相同的密钥,如 AES、DES。速度快,但密钥管理是个挑战。
- 非对称加密:使用一对密钥,公钥用于加密,私钥用于解密,如 RSA。虽然相对慢,但安全性高,适合公开通信。
常见算法
- AES(高级加密标准):一种广泛使用的对称加密算法,使用128位、192位或256位密钥,安全性高且快速。
- RSA:一种常见的非对称加密算法,通常用于安全的数据传输。
示例
假设您使用 AES 对字符串 “Hello, World!” 进行加密,使用一个密钥 mysecretkey
:
- 加密后的结果可能是一串看似随机的字节,比如
XzF8j9&...
,此时没有密钥的人无法解读这个数据。
综合示例
假设您要处理一个文本文件,其中包含了一些敏感信息:
- 首先,加密内容:
- 使用 AES 算法和密钥将文件内容转换成不可读的格式。
- 然后,压缩加密后的内容:
- 使用如 zlib 的无损压缩算法进一步减小加密数据的大小。
- 最终输出:
- 将压缩后的数据写入一个文件(例如
.slth
),并在文件开头附加必要的元数据,例如使用的加密算法、密钥长度等。
- 将压缩后的数据写入一个文件(例如
小结
- 压缩 是为了节省空间和提高传输效率,通过消除冗余信息实现。
- 加密 是为了保护数据安全,使得只有拥有正确密钥的人才能访问数据。
- Title: 自制压缩加密程序学习笔记
- Author: owofile
- Created at : 2024-10-07 13:50:27
- Updated at : 2025-04-11 21:18:27
- Link: https://owofile.github.io/blog/2024/10/07/自制压缩加密程序学习笔记/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments