Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
collapsefalse
HMAC( < cContent >, < cKey >, < cCryptoTypenCryptoType >, [ nRetType ], [ nContentType ], [ nKeyType ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cContent

caractere

Indica a string de entrada que contém os dados para os quais será gerado o hash.

X

 


cKey

caractere

Indica a chave que será utilizada para gerar o hash.

X


 nCryptoType

cCryptoType

numérico

Indica o tipo de algoritmo criptográfico que será utilizado para geração do Hash. Veja tabela nas observações.

X

 


nRetType

numérico

Indica o tipo do formato de retorno do hash. Quando não informado valor padrão será 2 (Hex Hash). Veja tabela nas observações.



nContentType

numérico

Indica o tipo do formato do conteúdo da variável cContent. Quando não informado o padrão será 1 (Texto). Veja tabela nas observações.

 



nKeyType

numérico

Indica o tipo do formato da chave informada na variável cKey. Quando não informado o padrão será 1 (Texto). Veja tabela nas observações. 



Retorno

Nome

Tipo

Descrição

cDigest

caractere

Retorna o hash (Message Authentication Code) do conteúdo de entrada informado, no formato especificado.

Informações
icontrue
titleObservações
  • A geração de um hash (Message Authentication Code) normalmente é utilizada para verificar se o conteúdo é originário de uma fonte confiável, por exemplo, uma empresa que sofre com atacantes que inserem pedidos fraudulentos pela Internet podem solicitar que todos os seus clientes forneçam uma chave secreta com ele. Junto com um pedido, um cliente deve fornecer o resumo do HMAC do pedido, computado por meio da chave simétrica do cliente. A empresa, que conhece a chave simétrica do cliente, pode então verificar que o pedido se originou a partir do cliente indicado e não foi adulterado.
  • Tipo de algoritmo válido para o parâmetro

...

  • nCryptoType:

    Valor

    Algoritmo

    1

    MD5

    3

    SHA1

    5

    SHA256

    7

    SHA512

...

  • Tipos de Outputs para o parâmetro nRetType:

    Valor

    Formato

    1

    Raw Hash

    2

    Hex Hash (Default)

  • Tipos de inputs para o parâmetro nContentType:

    Valor

    Formato

    1

    Texto

    2

    Base 64

    3

    Hexadecimal

  • Tipos de inputs para o parâmetro nKeyType:

    Valor

    Formato

    1

    Texto

    2

    Base 64

    3

    Hexadecimal

  • Caso algum erro ocorra durante a geração do hash uma mensagem de erro será gerada no log no servidor e o hash de saída será vazio.

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
User Function tstHMAC()

  Local sInputcInput    := "0123456789abcdefghijklmnopqrstuvxz"
  Local sKeyHxcKeyHx    := "c8783fc0963838abc662c920c82e94cf"
  Local nCpSHA256 := 5
  Local sHashHexcHashHex  := ""
  Local  Local sHashRawcHashRaw  := ""

  sHashHex  cHashHex := HMAC( sInputcInput, sKeyHxcKeyHx, nCpSHA256, 2,  1, 3 )
  Varinfo( "Input     ",  sInputcInput   )
  Varinfo  Varinfo( "HMAC-SHA256 Hex",  sHashHex )

  sHashRaw  cHashRaw := HMAC( sInputcInput, sKeyHxcKeyHx, nCpSHA256, 1,  1, 3 )
  Varinfo  Varinfo( "HMAC-SHA256 Raw",  sHashRaw )

Return

User Function HmacBase64()
  local cInput64 := Encode64( "secret text" )
  local cKey64 := Encode64( "d key used" )
  local nSha1Type := 3
  local nTypeBase64 := 2
  local nOutPutType := 1
  local ret := ""

  ret := HMAC( cInput64, cKey64, nSha1Type, nOutPutType, nTypeBase64, nTypeBase64 )
  Varinfo( "cInput64 ", cInput64 )
  Varinfo( "ret ", ret )
Return

User Function HmacHex()
  local cInput := "secret text"
  local cInputHex := "7365637265742074657874"
  local cKey := "d key used"
  local cKeyHex := "64206b65792075736564"
  local nSha1Type := 3
  local nTypeHex := 3
  local nOutPutType := 1
  local ret := ""

  ret := HMAC( cInputHex, cKeyHex, nSha1Type, nOutPutType, nTypeHex, nTypeHex )
  Varinfo( "cInputHex ", cInputHex )
  Varinfo( "ret ", ret )
Return

Abrangência

AppServer 13.1.4.0 e 13.2.4.0 | nContetType e nKeyType disponíveis a partir da versão 17.3.0.18

Veja também