探索OpenSSL加密-Part 02:加密与解密基础

探索OpenSSL加密-Part 02:加密与解密基础

解决方案goocz2025-03-17 16:41:5815A+A-


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加密一个文本文件,并解密验证

  1. 创建一个文本文件 plaintext.txt,内容为 Hello, OpenSSL!
  2. 使用 AES-256-CBC 加密该文件,生成 encrypted.txt
  3. 解密 encrypted.txt,生成 decrypted.txt
  4. 验证解密后的文件内容是否与原始文件一致。

任务2:生成RSA密钥对,并使用公钥加密、私钥解密

  1. 生成一个 2048 位的 RSA 私钥 private_key.pem
  2. 从私钥中提取公钥 public_key.pem
  3. 使用公钥加密 plaintext.txt,生成 encrypted.txt
  4. 使用私钥解密 encrypted.txt,生成 decrypted.txt
  5. 验证解密后的文件内容是否与原始文件一致。
点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5