Hash

Saiba mais sobre o conector Hash e como usá-lo na Digibee Integration Platform.

O conector Hash permite gerar valores de hash a partir de diferentes tipos de entrada. Dependendo do seu caso de uso, é possível gerar o hash de campos específicos, arquivos ou do payload completo.

Cada opção possui seu próprio conjunto de parâmetros, mas todas seguem a mesma lógica básica: selecionar a operação, definir o algoritmo de hash e ajustar parâmetros adicionais conforme necessário.

Parâmetros

Os parâmetros de configuração são organizados em abas: General e Documentation.

  • A aba General contém todos os campos usados para configurar o conector. Inclui parâmetros que estão sempre visíveis, além daqueles que aparecem dinamicamente de acordo com a Crypto Operation selecionada (por exemplo, Hash Fields, Hash File ou Hash Payload) ou com o Crypto Algorithm (por exemplo, HmacSHA256 ou BCrypt).

  • A aba Documentation fornece um campo opcional onde você pode descrever a configuração do conector e adicionar regras de negócio ou observações relevantes.

Os campos que aceitam expressões Double Braces são marcados na coluna Suporta DB.

Parâmetros comuns

Esses parâmetros são sempre exibidos, independentemente da operação selecionada.

Parâmetro
Descrição
Tipo de dado
Suporta DB
Valor padrão

Alias

Nome (alias) para a saída deste conector, permitindo referenciá-la posteriormente no fluxo usando expressões Double Braces. Saiba mais.

String

hash-1

Crypto Operation

Tipo de operação a ser realizada. Valores possíveis: Hash Fields, Hash Payload ou Hash File.

Seleção

Hash Fields

Crypto Algorithm

Tipo de algoritmo usado para gerar o hash. Valores possíveis: MD5, SHA-1, SHA-256, SHA-384, SHA-512, HmacSHA1, HmacSHA256, HmacSHA384, HmacSHA512 e BCrypt.

Seleção

SHA-512

Result As Hexadecimal

Quando habilitado, mantém o hash no formato hexadecimal; caso contrário, o formato será base64.

Booleano

true

Fail On Error

Quando habilitado, interrompe a execução do pipeline se ocorrer um erro. Quando desabilitado, a execução continua, mas a propriedade "success" será definida como false.

Booleano

false

Hash Fields

Esses parâmetros são exibidos apenas quando a Crypto Operation está definida como Hash Fields.

Parâmetro
Descrição
Tipo de dado
Suporta DB
Valor padrão

JSON Field Path

Caminho do campo string no JSON, em notação pontuada.

String

xml.text

Preserve Original

Quando ativado, preserva o campo original como uma propriedade "Field" no mesmo nível do campo original.

Booleano

true

Hash File

Esses parâmetros são exibidos apenas quando a Crypto Operation está definida como Hash File.

Parâmetro
Descrição
Tipo de dado
Suporta DB
Valor padrão

File Name

Nome do arquivo ou caminho completo (por exemplo, tmp/processed/file.txt).

String

N/A

Hash Payload

Esses parâmetros são exibidos apenas quando a Crypto Operation está definida como Hash Payload.

Parâmetro
Descrição
Tipo de dado
Suporta DB
Valor padrão

Payload

Campo usado para informar diretamente o payload que será convertido em hash.

String

N/A

Configuração baseada no algoritmo

Esses parâmetros dependem do Crypto Algorithm selecionado.

Parâmetro
Descrição
Tipo de dado
Suporta DB
Valor padrão

Account

Exibido apenas quando o Crypto Algorithm é um dos seguintes: HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. A conta deve ser do tipo Secret Key, e a chave para o hash deve ser informada.

String

N/A

Secret Key (DB)

Exibido apenas se nenhuma conta for selecionada e o Crypto Algorithm for um dos seguintes: HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. Permite que o conector receba a chave dinamicamente.

String

N/A

Secret Key Type

Exibido apenas se nenhuma conta for selecionada e o Crypto Algorithm for um dos seguintes: HmacSHA1, HmacSHA256, HmacSHA384 ou HmacSHA512. Define o tipo de chave informada — String, Hexadecimal ou Base64.

Seleção

Hexadecimal

Charset

Exibido apenas quando o Secret Key Type é String. Define o conjunto de caracteres da chave.

Seleção

UTF-8

BCrypt Version

Exibido apenas quando o Crypto Algorithm é BCrypt. Define a versão do algoritmo a ser usada.

Seleção

2y

Salt

Exibido apenas quando o Crypto Algorithm é BCrypt. Cadeia de 16 bytes adicionada ao valor do hash. Se não for informada, um valor aleatório será usado.

String

N/A

Cost Factor

Exibido apenas quando o Crypto Algorithm é BCrypt. Determina o número de rodadas do hash (2^n, em que n é o fator de custo, entre 4 e 20).

Integer

4

Informações adicionais sobre os parâmetros

Hash gerado

O conector gera um hash a partir da string informada no campo Payload quando a operação selecionada é Hash Payload.

Se a operação selecionada for Hash Fields, o conector gera o hash a partir da string encontrada nos campos especificados no JSON de entrada.

Cost Factor

No algoritmo BCrypt, o fator de custo aumenta exponencialmente o tempo de processamento e os recursos necessários. O algoritmo é executado consecutivamente conforme o número de rodadas derivado do cálculo 2ⁿ, em que “n” é o fator de custo.

Os exemplos a seguir ilustram como o tempo de execução pode variar conforme o fator de custo. Os testes foram realizados usando um payload de 1 MB e os valores mínimo e máximo permitidos para o algoritmo BCrypt.

Cost Factor 4

  • Pipeline pequeno: Média de 0,98s

  • Pipeline médio: Média de 0,64s

  • Pipeline grande: Média de 0,07s

Cost Factor 20

  • Pipeline pequeno: Média de 8m 7s

  • Pipeline médio: Média de 3m 56s

  • Pipeline grande: Média de 1m 53s

Esses resultados podem variar dependendo do fluxo de integração, do tamanho da mensagem e do fator de custo aplicado.

O fator de custo do BCrypt pode variar de 4 a 31. No entanto, valores acima de 20 resultam em cargas de processamento e tempos de execução muito altos, frequentemente excedendo os limites de timeout do pipeline. Por esse motivo, o conector Hash aceita no máximo o valor 20 para o fator de custo.

Ao usar o algoritmo BCrypt com o conector Hash, mantenha o fator de custo dentro desse limite para evitar falhas de validação ou processamento no fluxo de integração.

Fluxo de mensagens

Entrada

Operação: Hash Fields

Ao usar a operação Hash Fields, o conector pode receber qualquer mensagem de entrada, mas é necessário configurar a propriedade JSON Field Path para definir onde o hash será aplicado. Por exemplo:

JSON Field Path: data.test

Payload:

{    
    "data":[
        {"test":"xpto"},        
        {"test":"xpto1"},        
        {"test":"xpto2"},        
        {"test":"xpto3"}    
    ]
}

Nesse caso, o conector procura a propriedade test dentro da propriedade data.

Operação: Hash Payload

Ao usar a operação Hash Payload, a mensagem que será convertida em hash deve ser informada no campo Payload.

Operação: Hash Files

Ao usar a operação Hash Files, o nome do arquivo deve ser informado no campo File Name.

Saída

Operação: Hash Fields

A saída mantém a mesma estrutura da entrada, mas inclui o hash gerado.

Se a propriedade Preserve Original estiver ativada, a saída mantém o campo original e adiciona um novo campo prefixado com um sublinhado (_):

{
  "data": [
    {
      "test": "3851b1ae73ca0ca6e3c24a0256a80ace",
     "_test": "xpto"
    },
    {
      "test": "ca9e9bf198149d78f4aad334c838a263",
   "_test": "xpto1"
    },
    {
      "test": "83709b4f9067a83bbdfb0c358dc23a5e",
      "_test": "xpto2"
    },
    {
      "test": "e427f7e6f1bd29d91ea0cc53e40fba12",
      "_test": "xpto3"
    }
  ]
}

Operação: Hash Payload

A saída contém a propriedade result com o hash da mensagem informada:

{  
    "result": "3851b1ae73ca0ca6e3c24a0256a80ace"
}

Exemplo de erro

{
  "success": false,
  "message": "Something went wrong while trying to use the HashConnector. Error: java.lang.StringIndexOutOfBoundsException: String index out of range: 1",
  "error": "java.lang.StringIndexOutOfBoundsException: String index out of range: 1"
}
  • success: false — indica que ocorreu um erro durante a execução.

  • message: mensagem de erro do conector.

  • error: mensagem detalhada de erro retornada pelo algoritmo de hash.

Operação: Hash Files

A saída exibe uma propriedade result contendo o hash gerado de acordo com o algoritmo selecionado.

Exemplo usando SHA-256:

{
  "result": "aff746225015b78af3c3f0a7540b10c300d73b3b562cec75ef2df9cfbf7ae2b6"
}

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: true

  • Result as Hexadecimal: true

Entrada

{
    "data": [
        {"test":"xpto"},
        {"test":"xpto1"},
        {"test":"xpto2"},
        {"test":"xpto3"}
    ]
}

Saída

{
  "data": [
    {
      "test": "2e954593b0b51547656f7f06ec3818a2b42fed46307b81bd493133aa1ce45173",
      "_test": "xpto"
    },
    {
      "test": "8b948d95169f851545f8161fb4dc8e1d37a4c79014ac1d02186fa8946a91aab9",
      "_test": "xpto1"
    },
    {
      "test": "4c9e0d7ca22d9ab7cc675de59226f9477fd847ede13894b835d0ae204139f63a",
      "_test": "xpto2"
    },
    {
      "test": "b5bd5abe3eb5958153af6615df06ccbdfe5857a13da2601f49e4de9fbb102f9a",
      "_test": "xpto3"
    }
 ]
}

Exemplo 2

  • Crypto Operation: Hash Fields

  • Crypto Algorithm: HmacSHA256

  • Account: (vazio)

  • Secret Key: 001def0209

  • Secret Key Type: Hexadecimal (o valor do campo Secret Key deve estar em formato hexadecimal)

  • JSON Field Path: data.test

  • Preserve Original: true

  • Result as Hexadecimal: true

Entrada

{
    "data": [
        {"test":"xpto"},
        {"test":"xpto1"},
        {"test":"xpto2"},
        {"test":"xpto3"}
    ]
}

Saída

{
  "data": [
    {
      "test": "257966929b29a6e0618d47a152e2856a888072400a5cb458fa1d40ff3cedc734",
      "_test": "xpto"
    },
    {
      "test": "ce0e754ab2f57f1fca1a00fce3e834a6940bea8013ae59b6641a4911e349b480",
      "_test": "xpto1"
    },
    {
      "test": "ff0cd9c0df219f99567aeb25d7d5ab9acff3c29728b0f4f71f50e750750a26d5",
      "_test": "xpto2"
    },
    {
      "test": "04a11cbc118ea455c0072e6c70607f68324e5444c8a4795443d25933d9dfa9c6",
      "_test": "xpto3"
    }
  ]
}

Exemplo 3

  • Crypto Operation: Hash Fields

  • Crypto Algorithm: BCrypt

  • BCrypt Version: 2y

  • Salt: N9qo8uLOickgx2ZM

  • Cost: 6

  • JSON Field Path: data.test

  • Preserve Original: true

Entrada

{
    "data": [
        {"test":"xpto"},
        {"test":"xpto1"},
        {"test":"xpto2"},
        {"test":"xpto3"}
    ]
}

Saída

{
    "data": [
        {
            "test": "$2y$06$RhjvZxfzRC7nW0rlcBHYROhJmATBMG6eXfkYkffexdfdFHzzp27Iu",
            "_test": "xpto"
        },
        {
            "test": "$2y$06$RhjvZxfzRC7nW0rlcBHYROm9TaJZ6QQUstIomnJG/Qgc7fPU5x8S.",
            "_test": "xpto1"
        },
        {
            "test": "$2y$06$RhjvZxfzRC7nW0rlcBHYROHAP1dIbNu3SenuQ6B.W9OkJ0/NzYF6e",
            "_test": "xpto2"
        },
        {
            "test": "$2y$06$RhjvZxfzRC7nW0rlcBHYROPsXkmxUVt8Suo8d3GuOl9q0pryw6iJy",
            "_test": "xpto3"
        }
    ]
}

Operação: Hash Payload

Exemplo 1

  • Crypto Operation: Hash Payload

  • Crypto Algorithm: SHA-256

  • Payload: (qualquer payload)

  • Result as Hexadecimal: true

Saída

{  
    "result": "2e954593b0b51547656f7f06ec3818a2b42fed46307b81bd493133aa1ce45173"
}

Exemplo 2

  • Crypto Operation: Hash Payload

  • Crypto Algorithm: HmacSHA512

  • Account: (vazio)

  • Secret Key: 001def0209

  • Secret Key Type: Hexadecimal

  • Payload: (qualquer payload)

  • Result as Hexadecimal: true

Saída

{  
  "result": "517da9449385a43478309459adf9304bd3c8f63cd1d388abd5cbc02b81d8ccb39d303f877019aebfed073166e6c410197e10077f6df3f7a3b3f50adb8cd09580"
}

Exemplo 3

  • Crypto Operation: Hash Payload

  • Crypto Algorithm: BCrypt

  • BCrypt Version: 2b

  • Salt: N9qo8uLOickgx2ZM

  • Cost: 10

  • Payload: {{ message.data }}

Entrada

{
    "data": [
        {"test":"xpto"},
        {"test":"xpto1"},
        {"test":"xpto2"},
        {"test":"xpto3"}
    ]
}

Saída

{  
    "result": "$2b$10$RhjvZxfzRC7nW0rlcBHYROa3UXROXVeKZ3oK4DSc1mV6iJ/pBqBm6"
}

Operação: Hash Files

Quando a operação Hash Files é selecionada, o conector gera um hash a partir do arquivo informado no campo File Name.

O arquivo deve ter sido previamente processado no pipeline, por exemplo, por meio de um conector File Writer.

Exemplo

  • Crypto Operation: Hash File

  • Crypto Algorithm: SHA-256

  • File Name: {{ message.fileName }} (os dados são passados por meio do conector File Writer)

  • Result as Hexadecimal: true

Entrada

{
  "data": "linha 1",
  "fileName": "test"
}

Saída

{
  "result": "aff746225015b78af3c3f0a7540b10c300d73b3b562cec75ef2df9cfbf7ae2b6"
}

Atualizado

Isto foi útil?