HMAC (Hash-based Message Authentication Code) gera o hash de autenticação de uma mensagem de entrada, em combinação com uma chave secreta. Essa implementação suporta os algoritmos SHA-1,SHA-256,SHA-512 e MD5.
Sintaxe
HMAC( < cContent >, < cKey >, < cCryptoType >, [ nRetType ] )
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 |
|
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. |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
cDigest | caractere | Retorna o hash (Message Authentication Code) do conteúdo de entrada informado, no formato especificado. |
Observaçõ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 cCryptoType:
Valor
Algoritmo
1
MD5
3
SHA1
5
SHA256
7
SHA512
Tipo de Outputs para o parâmetro nRetType:
Valor
Formato
1
Raw Hash
2
Hex Hash (Default)
- 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
User Function tstHMAC() Local sInput := "0123456789abcdefghijklmnopqrstuvxz" Local sKeyHx := "c8783fc0963838abc662c920c82e94cf" Local nCpSHA256 := 5 Local sHashHex := "" Local sHashRaw := "" sHashHex := HMAC( sInput, sKeyHx, nCpSHA256 ) Varinfo( "Input ", sInput ) Varinfo( "HMAC-SHA256 Hex", sHashHex ) sHashRaw := HMAC( sInput, sKeyHx, nCpSHA256, 1 ) Varinfo( "HMAC-SHA256 Raw", sHashRaw ) Return
Abrangência
AppServer 13.1.4.0 e 13.2.4.0
Veja também