
Me deparei com o seguinte comando para unix no binance que estava tentando descompactar. Veja aqui:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md
(Seção: Exemplos de endpoint ASSINADO para POST /api/v1/order)
openssl dgst -sha256 -hmac
O que entendi é que é uma chamada ao comando openssl para produzir um resumo, o resumo será do tipo sha256 conforme acordado pelas especificações padrão. O que não entendo é a -hmac
bandeira. O que é e o que faz no nível matemático?
Minha tentativa de resolver o problema:
Fiz uma pesquisa no Google openssl -hmac
e openssl dgst -hmac
mas os 10 principais resultados não foram úteis para mim. Então imagino que seria melhor que usuários mais experientes perguntassem.
Atualizações:
A bandeira não é mencionada nestes documentos:https://www.mkssoftware.com/docs/man1/openssl_dgst.1.aspe então estou começando a acreditar que pode não ter propósito criptográfico. Embora eu não tenha certeza agora.
Encontrei algo semelhante ao sinalizador mencionado nesta pergunta:https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash
Responder1
HMAC também é chamado de hash com chave. Portanto, você só poderá gerar o mesmo hash durante a verificação se tiver a mesma chave usada durante a geração da assinatura. O resultado do MAC é chamado deetiqueta de autenticação.
HMAC é uma construção especial que usa duas chamadas para o hash - no seu caso SHA-256 - que é usado internamente e não usa nenhum outroprimitivas criptográficas. Poderia, portanto, ser visto como um processo específicomododo próprio hash. Daí a inclusão emdgst.
Faltam no seu código os dados principais, que são obviamente necessários para criar um hash com chave. Isto deve ser apresentado depois -hmac
. Infelizmente openssl
requer um formato binário da chave. Para mais informações vejaesta conversa antiga na lista de discussão OpenSSL.
EDIT # 1: Indo um pouco mais fundo, se você quiser especificar a chave como hexadecimais, você pode usar uma linha como esta:
echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304
A saída da função é a saída da segunda execução do hash, portanto, é indistinguível apenas do SHA-256 se você apenas observar o tamanho do resultado do hash/HMAC. É claro que o conteúdo será completamente diferente de apenas fazer hash dos dados (ou chave e dados concatenados).
EDIT # 2: No entanto, você não especificou uma chave, então, na verdade, o HMAC é ignorado e o SHA-256 é usado. Isso foi sinalizado como um bug, vejaaqui
Responder2
meus 2 centavos se você estiver no iOS (ou Mac OS...) cansado de brincar, eu escrevi.
https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en