### DB 文件如何解密，原理是什么

数据库文件解密主要取决于**加密类型**和**密钥的存储位置**。许多数据库系统（如 MySQL、SQL Server、PostgreSQL）都提供了数据加密功能，通常分为以下几种类型：

1. **文件系统加密**：例如，使用 Linux 的 `LUKS` 或 Windows 的 `BitLocker` 等，对整个硬盘分区进行加密。这种情况下，数据库文件本身并没有加密，而是其所在的整个文件系统被加密了
   - **解密原理**：只要系统成功启动并解锁了加密分区，你就可以像访问普通文件一样访问 DB 文件。解密的密钥通常存储在系统内存中或 TPM (可信平台模块) 芯片中
2. **透明数据加密**：这是一种在数据库级别实现的加密，对整个数据库文件进行实时加密。当数据写入磁盘时，它会被加密；当数据从磁盘读取到内存时，它又会被自动解密
   - **解密原理**：TDE 的加密和解密过程对用户是透明的，但它的**加密密钥**通常存储在一个**主密钥（Master Key）或证书**中，而主密钥又被另一个**服务主密钥（Service Master Key）**保护。这些密钥通常与数据库实例或操作系统相关联，因此，即使你拿到加密的 DB 文件，如果没有密钥，也无法解密
3. **应用层加密**：数据在被写入数据库之前，由应用程序进行加密
   - **解密原理**：这种加密通常依赖于应用程序代码中的硬编码密钥或外部密钥管理服务。解密必须通过应用程序，或者你有能力获取加密密钥并使用相应的加密算法进行解密