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)
.
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