NS CTe

  1. Inicio
  2. Documentos
  3. NS CTe
  4. Materiais Explicativos do...
  5. Como gerar a hash SHA1 para o Comprovante de Entrega do CTe

Como gerar a hash SHA1 para o Comprovante de Entrega do CTe

Como gerar a Hash (SHA1) para informar no campo hashEntrega do Comprovante de entrega do CTe.

Neste post, vamos analisar como preencher um dos campos do Comprovante de Entrega de CT-e, o hashEntrega.

Primeiramente, vamos entender o que é uma hash do tipo SHA1, que deve ser informada neste campo.

Na área da criptografia, SHA-1 é uma função de dispersão criptográfica (ou função hash criptográfica) projetada pela Agência de Segurança Nacional dos Estados Unidos e é um Padrão Federal de Processamento de Informação dos Estados Unidos publicado pelo Instituto Nacional de Padrões e Tecnologia (NIST).

SHA-1 produz um valor de dispersão de 160 bits (20 bytes) conhecido como resumo da mensagem. Um valor de dispersão SHA-1 é normalmente tratado como um número hexadecimal de 40 dígitos.

Por exemplo: 

7fbdc307e1e2ca01d285baab5fe8cd74259d109c

Por que devemos informar essa hash no comprovante do CTe?

O campo, de nome, hashEntrega, é uma informação obrigatória para a emissão deste evento do Conhecimento de Transporte.

A finalidade dessa informação é associar um arquivo digital à comprovação de entrega de produtos associados a uma Nota Fiscal Eletrônica evitando assim,  os problemas que ocorrem com o canhoto físico, como perda do documento e demora na comprovação da entrega, além de minimizar a necessidade de armazenamento de papéis e facilitar possíveis alterações no documento.

Ele é constituído da Hash (SHA1) no formato Base64 resultante da concatenação ( união ) dos seguintes dados: 

Chave de acesso do CT-e + Base64 da imagem capturada da entrega

Esta imagem capturada pode ser assinatura eletrônica, da digital do recebedor, uma foto, etc.

Segundo documentação da Sefaz, devemos observar estes dois pontos:

Nota 1: A critério do autor deste evento, este campo pode ser utilizado como índice para acesso às informações do Comprovante de entrega.

Nota 2: A SEFAZ não tem nenhum controle sobre a informação deste campo. Observação: 28 caracteres são representados no schema como 20 bytes do tipo base64Binary

Para construirmos essa hash SHA1, a NS Tecnologia tem um exemplo, na linguagem Java, que faz a concatenação da Chave de acesso do CT-e + Base64 da imagem capturada da entrega, e gera uma hash SHA1 em base64 para ser informada neste campo do CTe.

Veja agora como utilizar o código:

Vamos utilizar a função gerarHashEntrega e informar os parâmetros chCTe ( chave de 44 dígitos do CTee ) e a base64 da imagem da entrega (imagem capturada na entrega):

Podemos informar os parâmetros da seguinte forma:

Feito isso, a função fará o seguinte trabalho:

Primeiramente ela irá concatenar as strings:

Após isso, a função irá criptografar a string e gerar a base64 para informarmos no CTe:

assim, a função retorna a string em base64, que pode ser utilizada no evento do cte:

hashEntrega: tf0LeHie3N9AdQ7eH5SVeqg44Oc=

{
	"X-AUTH-TOKEN": "SEU_TOKEN_AQUI",
	"chCTe": "43201207364617000135570000000112971000112978",
	"tpAmb": 2,
	"dhEvento": "2021-03-31T11:32:00-03:00",
	"nSeqEvento": "1",
	"nProt": "143200000259657",
	"dhEntrega": "2021-03-31T11:32:00-03:00",
	"nDoc": "36985214715",
	"xNome": "NOME DE QUEM RECEBEU A ENTREGA",
	"hashEntrega": "tf0LeHie3N9AdQ7eH5SVeqg44Oc=",
	"dhHashEntrega": "2021-03-31T11:32:00-03:00",
	"latitude": "-31.776000",
	"longitude": "-52.359400",
	"chavesEntregues": [
		"43201188587357006604550010010421901000315147"
	]
}

Para baixar o código e utilizar na sua aplicação, acesse nosso GitHub:

https://github.com/NSTecnologia/hashEntregaCTe

Como podemos ajudar?