Cifrado
Collection field: EncryptionProfessional Edition+Introducción
Algunos datos empresariales privados, como los números de teléfono de clientes, las direcciones de correo electrónico y los números de tarjeta, pueden cifrarse y almacenarse en la base de datos como texto cifrado.

Métodos de cifrado
El complemento generará automáticamente un应用密钥, y esta clave se guardará en el directorio /storage/apps/main/encryption-field-keys.
El nombre del archivo 应用密钥 corresponde al ID de la clave y su extensión es .key. No modifique el nombre del archivo arbitrariamente.
Guarde cuidadosamente el archivo 应用密钥. Si se pierde el archivo 应用密钥, los datos cifrados no podrán descifrarse.
/storage/apps/${子应用name}/encryption-field-keysFuncionamiento
Se utiliza el cifrado de sobre.

Proceso de creación de claves
- La primera vez que se crea un campo cifrado, el sistema genera automáticamente un
应用密钥de 32 bits y lo guarda codificado en base64 en el directorio de almacenamiento predeterminado. - Cada vez que se crea un nuevo campo cifrado, se genera un
字段密钥aleatorio de 32 bits para ese campo. A continuación, se cifra mediante应用密钥y un字段加密向量aleatorio de 16 bits (algoritmo de cifradoAES), y se guarda en el campooptionsde la tablafields.
Proceso de cifrado de campos
- Cada vez que se escriben datos en un campo cifrado, primero se obtienen el
字段密钥y el字段加密向量cifrados del campo options de la tabla fields. - Se descifra el
字段密钥cifrado mediante应用密钥y字段加密向量. A continuación, los datos se cifran mediante字段密钥y un数据加密向量 aleatorio de 16 bits (algoritmo de cifrado AES). - Se firma el contenido mediante el
字段密钥descifrado (algoritmo de resumenHMAC-SHA256) y se convierte en una cadena codificada en base64 (el数据签名 generado se utilizará posteriormente para recuperar los datos). - Se concatenan en binario el数据加密向量 de 16 bits y el数据密文 cifrado, y el resultado se convierte en una cadena codificada en base64.
- Se concatenan, separados por '.', la cadena codificada en base64 de数据签名 y la cadena codificada en base64 de数据密文.
- Se guarda la cadena concatenada final en la base de datos.
Variables de entorno
Si desea especificar应用密钥, puede utilizar la variable de entorno ENCRYPTION_FIELD_KEY_PATH. El complemento cargará el archivo ubicado en esa ruta como应用密钥.
应用密钥Requisitos del formato de archivo:
- La extensión del archivo debe ser .key.
- El nombre del archivo se utilizará como ID de la clave. Se recomienda usar un UUID para garantizar su unicidad.
- El contenido del archivo debe ser datos binarios de 32 bits codificados en base64.
Configuración de campos

Impacto del cifrado en los filtros
Los campos cifrados solo admiten: igual, diferente, existe y no existe.

Método de filtrado de datos:
- Obtenga el字段密钥 del campo cifrado y utilice应用密钥 para descifrar字段密钥.
- Firme el texto de búsqueda introducido por el usuario mediante字段密钥 (algoritmo de resumen HMAC-SHA256).
- Concatene el texto de búsqueda firmado con el separador. y realice una búsqueda por coincidencia de prefijo en el campo cifrado de la base de datos.
Rotación de claves
Antes de utilizar el comando de rotación de claves nocobase key-rotation, confirme que la aplicación ya ha cargado este complemento.
Después de migrar la aplicación a un entorno nuevo, si no desea seguir utilizando la misma clave que en el entorno anterior, puede utilizar el comando nocobase key-rotation para reemplazar应用密钥.
Para ejecutar el comando de rotación de claves, debe especificar la clave de aplicación del entorno anterior. Tras su ejecución, se generará una nueva clave de aplicación que reemplazará la clave antigua. La nueva clave de aplicación se guardará codificada en base64 en el directorio de almacenamiento predeterminado.
Si se reemplaza la subaplicación 应用密钥, es necesario añadir el parámetro --app-name para especificar name

