Criptografia
Collection field: EncryptionProfessional Edition+Introdução
Alguns dados comerciais privados, como números de celular de clientes, endereços de e-mail e números de cartão, podem ser criptografados. Após a criptografia, eles são armazenados no banco de dados na forma de texto cifrado.

Método de criptografia
O plugin gera automaticamente um应用密钥, e essa chave é armazenada no diretório /storage/apps/main/encryption-field-keys.
O nome do arquivo 应用密钥 é o ID da chave, e a extensão é .key. Não altere o nome do arquivo sem necessidade.
Guarde o arquivo 应用密钥 com segurança. Se o arquivo 应用密钥 for perdido, os dados criptografados não poderão ser descriptografados.
/storage/apps/${子应用name}/encryption-field-keysComo funciona
É utilizado o método de criptografia envelope.

Processo de criação da chave
- Na primeira vez que um campo criptografado é criado, o sistema gera automaticamente um
应用密钥de 32 bytes e o salva no diretório de armazenamento padrão usando codificação base64. - Cada vez que um novo campo criptografado é criado, é gerado um
字段密钥aleatório de 32 bytes para esse campo. Em seguida, ele é criptografado usando应用密钥e um字段加密向量aleatório de 16 bytes (algoritmo de criptografiaAES) e salvo no campooptionsda tabelafields.
Processo de criptografia de campos
- Cada vez que dados são gravados em um campo criptografado, o
字段密钥criptografado e o字段加密向量são obtidos primeiro do campo options da tabela fields. - Use
应用密钥e字段加密向量para descriptografar o字段密钥criptografado. Em seguida, use字段密钥e um数据加密向量aleatório de 16 bytes para criptografar os dados (algoritmo de criptografiaAES). - Assine os dados usando o
字段密钥descriptografado (algoritmo de resumoHMAC-SHA256) e converta o resultado em uma string usando codificação base64 (o数据签名gerado será usado posteriormente para a busca de dados). - Concatene em formato binário o
数据加密向量de 16 bytes e o数据密文criptografado, e converta o resultado em uma string usando codificação base64. - Concatene a string codificada em base64 de
数据签名e a string codificada em base64 de数据密文, usando '.' como separador. - Salve a string concatenada final no banco de dados.
Variáveis de ambiente
Para especificar 应用密钥, use a variável de ambiente ENCRYPTION_FIELD_KEY_PATH. O plugin carregará o arquivo nesse caminho como 应用密钥.
应用密钥Requisitos de formato do arquivo:
- A extensão do arquivo deve ser
.key. - O nome do arquivo será usado como ID da chave; recomenda-se usar um UUID para garantir a exclusividade.
- O conteúdo do arquivo deve ser um dado binário de 32 bytes codificado em base64.
Configuração de campos

Impacto da criptografia na filtragem
Os campos criptografados oferecem suporte apenas a: igual, diferente, existe e não existe.

Método de filtragem de dados:
- Obtenha o
字段密钥do campo criptografado e use应用密钥para descriptografar字段密钥. - Use
字段密钥para assinar o texto de busca inserido pelo usuário (algoritmo de resumoHMAC-SHA256). - Concatene o texto de busca assinado com o separador
.e realize uma busca por correspondência de prefixo no campo criptografado do banco de dados.
Rotação de chaves
Antes de usar o comando de rotação de chaves nocobase key-rotation, confirme se a aplicação já carregou este plugin.
Depois de migrar a aplicação para um novo ambiente, se você não quiser continuar usando a mesma chave do ambiente antigo, poderá usar o comando nocobase key-rotation para substituir 应用密钥.
Para executar o comando de rotação de chaves, é necessário especificar a chave da aplicação do ambiente antigo. Após a execução, uma nova chave da aplicação será gerada para substituir a chave antiga. A nova chave da aplicação será salva no diretório de armazenamento padrão usando codificação base64.
Se estiver substituindo a subaplicação 应用密钥, adicione o parâmetro --app-name para especificar name.

