加密原理3-代码

对称加密是一种加密方式,它使用同一个密钥(称为“共享密钥”)来加密和解密数据。其核心原理是通过数学算法对明文进行转换,使得转换后的密文在没有密钥的情况下无法被还原。

对称加密的基本流程

  1. 密钥生成:通信双方事先协商或生成一个共享密钥。
  2. 加密过程:发送方使用密钥和加密算法将明文转换为密文。
  3. 传输密文:通过不安全的信道(如网络)传输密文。
  4. 解密过程:接收方使用相同的密钥和对应的解密算法将密文还原为明文。

核心加密算法示例

AES(高级加密标准) 为例,它是目前最流行的对称加密算法之一:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

# 1. 生成或获取共享密钥(必须是16、24或32字节长度)
key = b"this_is_a_secret_key_32bytes_long!"  # 32字节 = 256位

# 2. 创建加密器实例
cipher = AES.new(key, AES.MODE_CBC)  # 使用CBC模式,需要初始化向量(IV)

# 3. 准备明文并加密
plaintext = "Hello, AES encryption!"
padded_plaintext = pad(plaintext.encode('utf-8'), AES.block_size)  # 填充到16字节倍数
ciphertext = cipher.encrypt(padded_plaintext)

# 4. 保存初始化向量(IV)和密文
iv = cipher.iv
encrypted_data = base64.b64encode(iv + ciphertext).decode('utf-8')
print(f"加密后的数据: {encrypted_data}")

# 5. 解密过程(接收方)
received_data = base64.b64decode(encrypted_data)
iv = received_data[:AES.block_size]
ciphertext = received_data[AES.block_size:]

# 6. 创建解密器实例并解密
decipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = unpad(decipher.decrypt(ciphertext), AES.block_size)
print(f"解密后的明文: {decrypted_data.decode('utf-8')}")

加密模式的作用

不同的加密模式决定了如何处理块加密(将明文分成固定大小的块):

  1. ECB(电子密码本):最简单但不安全,相同明文生成相同密文。
  2. CBC(密码块链接):引入初始化向量(IV),增强安全性,需填充数据。
  3. CTR(计数器):转为流加密,无需填充,支持并行计算。
  4. GCM(伽罗瓦/计数器模式):提供加密和认证,常用于TLS。

常见对称加密算法

算法密钥长度块大小特点
DES56位(已淘汰)64位早期标准,安全性低
3DES112/168位64位DES的增强版,性能较低
AES128/192/256位128位目前最安全和流行的标准
ChaCha20256位流加密,性能高,移动端友好

对称加密的优缺点

  • 优点
    • 加密和解密速度快,适合处理大量数据。
    • 算法公开,安全性主要依赖密钥。
  • 缺点
    • 密钥分发困难:需通过安全信道共享密钥。
    • 密钥管理复杂:每对通信方需要独立密钥。
    • 扩展性差:用户数量增多时,密钥数量呈指数增长。

实际应用场景

  1. 数据存储加密:加密硬盘、数据库中的敏感数据。
  2. 网络通信:TLS协议中使用对称加密传输数据。
  3. 文件加密:如ZIP加密、PGP加密文件。

与非对称加密的结合

实际中,对称加密常与非对称加密(如RSA)结合使用:

  1. 使用非对称加密安全地交换对称密钥。
  2. 使用对称密钥快速加密大量数据。

这种混合模式既解决了密钥分发问题,又保持了加密效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值