算法: AES-256-GCM(认证加密,防篡改)
密钥: 主密钥 32 字节(从 ENCRYPTION_MASTER_KEY 加载,生产建议 KMS)
版本化: 支持密钥轮换,密文头部含版本号
IV: 每条记录独立 12 字节随机 IV(防重放)
索引: HMAC-SHA256 哈希(可查询,不可逆)
脱敏: 显示用 138****8888 等格式
═══════════════════════════════════════════════
覆盖字段:
sys_users.phone / email
wx_users.phone
orders.guest_phone / guest_id_card / guest_name
user_2fa.totp_secret / backup_codes
═══════════════════════════════════════════════
迁移老数据(已存在的明文记录):
POST /admin/security/encryption/migrate-existing
自动批量加密 phone / id_card 字段
密钥轮换(建议每年一次):
1. 生成新密钥(32 字节 hex)
2. 设置 ENCRYPTION_KEY_VERSION = 2
3. 后台跑 reencrypt() 批量重加密
4. 旧密钥 retire