Part 02:加密与解密基础
1.对称加密与非对称加密
- 对称加密
- 定义:使用相同的密钥进行加密和解密。
- 常见算法:AES、DES、3DES。
- 优点:加密速度快,适合大数据量加密。
- 缺点:密钥分发和管理困难。
- 应用场景:文件加密、数据库加密、网络通信加密。
- 非对称加密
- 定义:使用一对密钥(公钥和私钥),公钥加密,私钥解密。
- 常见算法:RSA、ECC、DSA。
- 优点:安全性高,适合密钥分发和数字签名。
- 缺点:加密速度慢,不适合大数据量加密。
- 应用场景:SSL/TLS、数字签名、密钥交换。
2.OpenSSL中的加密算法
- 对称加密算法
- AES(高级加密标准):支持 128 位、192 位、256 位密钥。
- DES(数据加密标准):已逐渐被 AES 取代。
- 3DES(三重 DES):对 DES 的改进,安全性更高。
- 非对称加密算法
- RSA:基于大整数分解的加密算法。
- ECC(椭圆曲线加密):基于椭圆曲线数学,密钥更短,安全性更高。
- 哈希算法
- SHA-1、SHA-256、MD5:用于生成数据的唯一哈希值。
3.对称加密实践
- 使用AES加密文件
- 生成一个随机密钥和初始化向量(IV):
openssl rand -hex 32 > key.txt # 生成32字节(256位)的密钥
openssl rand -hex 16 > iv.txt # 生成16字节(128位)的IV
- 使用 AES-256-CBC 加密文件:
openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.txt -pass file:key.txt -iv $(cat iv.txt)
- 解密文件:
openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt -pass file:key.txt -iv $(cat iv.txt)
- 验证解密结果
- 使用 diff 命令比较原始文件和解密后的文件:
diff plaintext.txt decrypted.txt
如果输出为空,说明解密成功。
4.非对称加密实践
- 非对称加密通信交换流程
SSL/TSL通信加密解密流程
- 生成RSA密钥对
- 生成私钥:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
- 从私钥中提取公钥:
openssl rsa -in private_key.pem -pubout -out public_key.pem
- 使用公钥加密
- 使用公钥加密文件:
openssl pkeyutl -encrypt -in plaintext.txt -out encrypted.txt -pubin -inkey public_key.pem
- 使用私钥解密
- 使用私钥解密文件:
openssl pkeyutl -decrypt -in encrypted.txt -out decrypted.txt -inkey private_key.pem
- 验证解密结果
- 使用 diff 命令比较原始文件和解密后的文件:
diff plaintext.txt decrypted.txt
如果输出为空,说明解密成功。
任务
任务1:使用AES加密一个文本文件,并解密验证
- 创建一个文本文件 plaintext.txt,内容为 Hello, OpenSSL!。
- 使用 AES-256-CBC 加密该文件,生成 encrypted.txt。
- 解密 encrypted.txt,生成 decrypted.txt。
- 验证解密后的文件内容是否与原始文件一致。
任务2:生成RSA密钥对,并使用公钥加密、私钥解密
- 生成一个 2048 位的 RSA 私钥 private_key.pem。
- 从私钥中提取公钥 public_key.pem。
- 使用公钥加密 plaintext.txt,生成 encrypted.txt。
- 使用私钥解密 encrypted.txt,生成 decrypted.txt。
- 验证解密后的文件内容是否与原始文件一致。