openssl dgst-sha256 -hmac -hex -macopt hexkey: $ (cat mykey.txt) -out hmac.txt / bin / ps
Estou tentando usar o openssl para criar um hash criptográfico de um arquivo usando o HMAC-SHA-256. Estou confuso sobre o motivo de eu estar vendo um erro 'não há arquivo ou diretório' na saída.
A chave que estou usando está em um arquivo chamado mykey.txt.
Este é o meu comando:
openssl dgst -sha256 -hmac -hex hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
E a saída
-hmac
usa a chave como argumento ( consulte o manual ), portanto, seu comando pede um HMAC usando a chave -hex
. hexkey:...
é considerado um nome de arquivo, já que ele não inicia com um traço, e openssl
não aceita opções após nomes de arquivos, portanto, o seguinte -out
também é um nome de arquivo.
Para obter o HMAC com uma chave fornecida como string hexadecimal, você precisará usar -mac hmac
e -macopt hexkey:<key>
. Observe que usar -hmac <key>
e
-mac hmac
juntos não funciona e -macopt
requer -mac hmac
.
Teste:
openssl dgst -sha256 -hmac abc <<< "message"
openssl dgst -sha256 -hmac abc -macopt hexkey:12345678 <<< "message"
openssl dgst -sha256 -mac hmac -macopt hexkey:616263 <<< "message"
perl -MDigest::HMAC=hmac_hex -MDigest::SHA=sha256 \
-le 'print(hmac_hex("message\n", "abc", \&sha256))'
Todos fornecem o hash 99592e56fcde028fb41882668b0cbfa0119116f9cf111d285f5cedb000cfc45a
que concorda com uma calculadora HMAC on-line aleatória para a mensagem message\n
, chave abc
ou 616263
em hexadecimal. (Observe a nova linha no final de message
aqui.)
Então, parece que você provavelmente desejaria
openssl dgst -sha256 -mac hmac -macopt hexkey:$(cat mykey.txt) -out hmac.txt /bin/ps
Já que estamos falando de criptografia, o que é difícil; e OpenSSL, que nem sempre tem as interfaces mais fáceis de usar, eu sugiro também verificar tudo sozinho, pelo menos duas vezes, em vez de aceitar minha palavra.
Tags openssl