Hash
Descubra mais sobre o componente Hash e saiba como utilizá-lo na Digibee Integration Platform.
O Hash gera um hash a partir de uma string.
Parâmetros
Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB)
.
Parâmetro | Descrição | Valor padrão | Tipo de dado |
---|---|---|---|
Crypto Operation | Tipos de operação disponíveis (Hash Fields, Hash Payload e Hash File). | Hash Fields | String |
File name | Nome ou caminho completo do arquivo (i.e. tmp/processed/file.txt). Este campo fica disponível somente quando Hash File estiver selecionado no parâmetro Crypto Operation e suporta somente MD5 Crypto Algorithm. | N/A | String |
Crypto Algorithm | Tipo de algoritmo utilizado para gerar o hash. Os possíveis valores para esse parâmetro são MD5, SHA-1, SHA-256, SHA-384, SHA-512, HmacSHA1, HmacSHA256, HmacSHA384, HmacSHA512 e BCrypt. | SHA-512 | String |
Account | Só será exibida caso o algoritmo selecionado no campo Crypto Algorithm seja HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. A conta deve ser do tipo SECRET_KEY e a chave para fazer o hash deve ser informada. | N/A | String |
Secret Key | Só será exibida se nenhuma conta estiver selecionada e caso o algoritmo selecionado no campo Crypto Algorithm seja HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. Essa é uma alternativa para o componente receber a chave para a geração do hash de forma dinâmica. | N/A | String |
Secret Key Type | Só será exibido caso o algoritmo selecionado no campo Crypto Algorithm seja HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. Esse campo também informa para o componente qual é o tipo da chave informada, que pode ser do tipo String, Hexadecimal ou base64. | Hexadecimal | String |
Charset | Charset do tipo da chave informada. Este campo fica disponível somente quando o valor do parâmetro Secret Key Type for String. | UTF-8 | String |
BCrypt Version | Versão do algoritmo BCrypt a ser considerada na geração do hash. Essa opção será disponibilizada apenas quando o valor do parâmetro Crypto Algorithm for BCrypt. | 2y | N/A |
Salt | String de 16 bytes adicionada ao valor do hash. Caso não seja informado, será assumido um valor aleatório. Essa opção será disponibilizada apenas quando o valor do parâmetro Crypto Algorithm for BCrypt. | N/A | String |
Cost Factor | Determina a quantidade de rodadas para o hash ser executado. O fator de custo será elevado à potência de 2 e os possíveis valores estão entre 4 e 20. Ex: se o valor do parâmetro for 10, então a quantidade de rodadas para o hash será 2ˆ10 = 1024 rodadas. Essa opção será disponibilizada apenas quando o valor do parâmetro Crypto Algorithm for BCrypt. Veja mais na seção abaixo. | 0 | Inteiro |
JSON Field Path | JSON como caminho do campo string em notação com pontos (dotted notation). | xml.text | String |
Payload | Campo para informar diretamente o payload que terá o hash feito. Ele será exibido apenas se a operação selecionada for Hash Payload. | N/A | String |
Preserve Original | Se ativada, a opção preserva o campo original como propriedade "Field" no mesmo nível do original. | True | Booleano |
Result As Hexadecimal | Se ativada, a opção mantém o hash em formato hexadecimal; do contrário, o formato será base64. | True | Booleano |
Fail On Error | Se a opção estiver habilitada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade "success". | False | Booleano |
Importante: o componente gera um hash a partir de uma string passada no campo Payload caso a operação selecionada seja Hash Payload. No entanto, se a operação selecionada for Hash Fields, então o componente gera um hash a partir de uma string passada nos campos especificados do JSON de entrada.
Fator de custo
O fator de custo no algoritmo BCrypt afeta exponencialmente o tempo e os recursos de processamento, pois o algoritmo será executado consecutivamente de acordo com o número de rodadas obtidas através do resultado do cálculo 2^n, no qual "n" é o fator de custo.
Veja alguns exemplos de execução para servir de parâmetro de duração do cálculo do hash. Como premissa para aplicar o hash do algoritmo BCrypt estão sendo utilizados um payload de 1MB e um fator de custo com o mínimo e o máximo permitido. Os resultados obtidos são:
Cost Factor 4
Pipeline Small: média de 0.98s
Pipeline Medium: média de 0.64s
Pipeline Large: média de 0.07s
Cost Factor 20
Pipeline Small: média de 8m 7s
Pipeline Medium: média de 3m 56s
Pipeline Large: média de 1m 53s
Os resultados acima podem variar de acordo com o fluxo de integração construído, com o tamanho da mensagem a ter o hash aplicado e com o fator de custo.
Outro ponto importante a ser destacado diz respeito aos limites do fator de custo. O fator de custo do algoritmo BCrypt permite uma faixa entre 4 e 31. No entanto, fatores acima de 20 acabam consumindo carga de processamento e tempo muito alto, inviabilizando os parâmetros de timeout de execução de um pipeline.
Com isso, o componente Hash foi limitado a aceitar no máximo 20 como valor de fator de custo. Partindo dessa premissa, quando for realizado o hash de um valor por meio do componente Hash e com a utilização do algoritmo BCrypt, atente-se ao limite de 20 como fator de custo. Dessa forma são evitados problemas de validação ou checagem no seu fluxo de integração.
Fluxo de mensagens
Entrada
Se você selecionar a operação Hash Fields, o componente recebe qualquer mensagem de entrada, mas você deve configurar o caminho para o hash da mensagem na propriedade JSON Field Path. Por exemplo:
JSON Field Path: data.test
Portanto, o componente faz uma busca na propriedade “test”, dentro da propriedade “data”.
Por outro lado, se você selecionar a operação Hash Payload, então a mensagem de entrada deve ser informada dentro do campo Payload.
Saída
Operação Hash Fields
Se você selecionar a operação Hash Fields, a saída contém a mesma estrutura de entrada, porém exibindo o hash da mensagem. Se a propriedade Preserve Original estiver habilitada, então a saída preserva o campo original no mesmo nível, adicionando o prefixo '_'
na frente do campo:
Operação Hash Payload
Se você selecionar a operação Hash Payload, a saída exibe a propriedade "result" com o hash da mensagem passada:
Erro
success: “false”, pois ocorreu um erro na execução.
message: mensagem de erro do componente.
error: mensagem de erro recebida do algoritmo de hash.
Hash em Ação
Operação Hash Fields
Exemplo 1
Crypto Operation: Hash Fields
Crypto Algorithm: SHA-256
JSON Field Path: data.test
Preserve Original: ativado
Result As Hexadecimal: ativado
Entrada
Saída
Exemplo 2
Crypto Operation: Hash Fields
Crypto Algorithm: HmacSHA256
Account: vazio
Secret Key: 001def0209
Secret Key Type: Hexadecimal (a chave passada na propriedade Secret Key deve estar em hexadecimal)
JSON Field Path: data.test
Preserve Original: ativado
Result As Hexadecimal: ativado
Entrada
Saída
Exemplo 3
Crypto Operation: Hash Fields
Crypto Algorithm: BCrypt
Bcrypt Version: 2y
Salt: N9qo8uLOickgx2ZM
Cost: 6
JSON Field Path: data.test
Preserve Original: ativado
Entrada
Saída
Operação Hash Payload
Exemplo 1
Crypto Operation: Hash Payload
Crypto Algorithm: SHA-256
Payload: xpto
Result As Hexadecimal: ativado
Saída
Exemplo 2
Crypto Operation: Hash Payload
Crypto Algorithm: HmacSHA512
Account: vazio
Secret Key: 001def0209
Secret Key Type: Hexadecimal (a chave passada na propriedade Secret Key deve estar em hexadecimal)
Payload: xpto
Result As Hexadecimal: ativado
Saída
Exemplo 3
Crypto Operation: Hash Payload
Crypto Algorithm: BCrypt
Bcrypt Version: 2b
Salt: N9qo8uLOickgx2ZM
Cost: 10
Payload: {{ message.data }}
Entrada
Saída
Atualizado