数据加密
介绍
数据加密是将原始数据(明文)通过特定算法转换为难以理解的格式(密文)的过程,目的是保护敏感信息在存储或传输过程中不被未授权访问。加密技术是现代信息安全的核心,广泛应用于网络通信、数据库存储、身份验证等领域。
备注
关键术语
- 明文(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 登录。
实际案例
场景:保护用户密码
- 问题:数据库直接存储明文密码,泄露后风险极高。
- 解决方案:使用单向哈希加密(如 bcrypt)存储密码哈希值。
- 代码示例:
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 协议)。
延伸学习
- 练习:尝试用 Python 的
cryptography
库实现 RSA 加密。 - 资源:
- NIST 加密标准指南
- 《应用密码学》(Bruce Schneier 著)