IT

Bash의 HMAC-SHA1

lottoking 2020. 9. 13. 10:56
반응형

Bash의 HMAC-SHA1


HMAC-SHA1해시 를 생성하는 bash는 있습니까?

다음 PHP 코드와 동등한 것을 찾고 있습니다.

hash_hmac("sha1", "value", "key");

나는 당신이 요구하는 것이 아니라는 것을 알고 싶습니다 바퀴를 재발 명하고 bash 버전을 작성하는 데는 의미가 없습니다.

openssl명령을 사용 하여 펼쳐서 해시를 생성 할 수 있습니다 .

[me@home] echo -n "value" | openssl dgst -sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319

또는 간단히 :

[me@home] echo -n "value" | openssl sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319

하는 것을 기억 사용 -n으로 echo또는 다른 줄 바꿈 문자가 문자열에 추가 하고이 데이터와 해시를 변경한다.

이 명령은 Linux / Unix, Cygwin 등의 선택에 이미 설치되어 있거나 설치되어 있어야하는 OpenSSL 패키지에서 제공됩니다.

이전 버전 openssl(RHEL4와 함께 버전 )은 -hmac옵션을 제공하지 않을 수 있습니다.


대체 솔루션이지만 주로 결과가 동일하다는 것을 증명하기 위해 hmac_sha1()명령 줄에서 PHP를 호출 할 수도 있습니다 .

[me@home]$ echo '<?= hash_hmac("sha1", "value", "key") ?>' | php
57443a4c052350a44638835d64fd66822f813319

다음은 hash_hmacPHP에서 와 같이 작동하는 bash 함수입니다 .

#!/bin/bash

function hash_hmac {
  digest="$1"
  data="$2"
  key="$3"
  shift 3
  echo -n "$data" | openssl dgst "-$digest" -hmac "$key" "$@"
}

# hex output by default
hash_hmac "sha1" "value" "key"

# raw output by adding the "-binary" flag
hash_hmac "sha1" "value" "key" -binary | base64

# other algos also work
hash_hmac "md5"  "value" "key"

hash_hmac 함수에 감사드립니다! 하지만 내 신청 충분하지 않습니다. 누군가 궁금한 경우를 대비하여 이전 해싱의 결과로 이진 입력 인 키를 사용하여 여러 번 항목을 다시 해시해야했습니다. (Amazon AWS 인증 서명은 이와 같이 생성됩니다.)

그래서 제가 필요한 것은 알고리즘을 깨지 않는 방식으로 바이너리 키를 제공하는 방법. 그런 다음 찾았습니다 : http://openssl.6102.n7.nabble.com/command-line-hmac-with-key-in-hex-td6754.html

Stephen Henson의 응답에는 값을 16 진수 형식으로 반환하기 위해 hash_hmac 함수가 있습니다. 따라서 다음을 반영해야합니다.

$ echo -n "$data" | openssl dgst "-$digest" -hmac "$key" | sed -e 's/^.* //'

그런 다음 다음 호출에서 키를 16 진수로 제공해야합니다.

$ echo -n "$data" | openssl dgst "-$digest" -mac HMAC -macopt "hexkey:$key" | sed -e 's/^.* //'

바라건대는 AWS에서 CloudFront 항목을 무효화하기 위해 bash 펼쳐보기 생성하려는 사람 (예 : 나처럼!) (아직 테스트하지 않는 것이 내 bash 펼쳐의 원인이라고 생각합니다. 작동하지 않고 내 PHP는 작동합니다 ...)


명령 줄에서 더 많은 JWT를 탐색하려는 사람들에게 : 멋진 jwt bash 스크립트

참고 URL : https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

반응형