跳到主要内容

数据加密

介绍

数据加密是将原始数据(明文)通过特定算法转换为难以理解的格式(密文)的过程,目的是保护敏感信息在存储或传输过程中不被未授权访问。加密技术是现代信息安全的核心,广泛应用于网络通信、数据库存储、身份验证等领域。

备注

关键术语

  • 明文(Plaintext):原始可读数据。
  • 密文(Ciphertext):加密后的不可读数据。
  • 密钥(Key):用于加密或解密的一串字符。

加密类型

1. 对称加密

使用同一个密钥进行加密和解密。速度快,适合大数据量加密,但密钥分发存在风险。

常见算法:AES、DES、3DES
示例(AES加密)

python
from cryptography.fernet import Fernet

# 生成密钥
key = Fernet.generate_key()
cipher = Fernet(key)

# 加密
plaintext = b"Hello, Jaeger!"
ciphertext = cipher.encrypt(plaintext)
print("密文:", ciphertext)

# 解密
decrypted = cipher.decrypt(ciphertext)
print("明文:", decrypted.decode())

输入/输出

明文: Hello, Jaeger!
密文: b'gAAAAABl...(省略)'

2. 非对称加密

使用**公钥(公开)和私钥(保密)**配对。公钥加密的数据只能由私钥解密,反之亦然。

常见算法:RSA、ECC
实际场景:HTTPS 证书、SSH 登录。

实际案例

场景:保护用户密码

  1. 问题:数据库直接存储明文密码,泄露后风险极高。
  2. 解决方案:使用单向哈希加密(如 bcrypt)存储密码哈希值。
  3. 代码示例
python
import bcrypt

# 哈希密码
password = b"user_password123"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print("哈希值:", hashed)

# 验证密码
input_password = b"user_password123"
if bcrypt.checkpw(input_password, hashed):
print("密码正确!")
注意

永远不要使用 MD5 或 SHA-1 等弱哈希算法存储密码!它们易受彩虹表攻击。

总结

  • 对称加密适合快速加密大量数据,但需安全共享密钥。
  • 非对称加密解决了密钥分发问题,但性能较低。
  • 实际应用中常结合两者(如 TLS 协议)。

延伸学习

  1. 练习:尝试用 Python 的 cryptography 库实现 RSA 加密。
  2. 资源