programing

Bash의 HMAC-SHA1

goodsources 2023. 4. 16. 15:02
반응형

Bash의 HMAC-SHA1

Bash 스크립트를 생성하여HMAC-SHA1해시?

이하의 PHP 코드에 상당하는 것을 찾고 있습니다.

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

이게 당신이 원하는 게 아니라는 건 알지만 바퀴를 다시 만들고 bash 버전을 쓰는 건 의미가 없어요.

명령어를 사용하면 스크립트 내에서 해시를 생성할 수 있습니다.

[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선택.


대체 솔루션으로서, 그러나 주로 결과가 같다는 것을 증명하기 위해 PHP를 호출할 수도 있습니다.hmac_sha1()명령줄에서 다음을 수행합니다.

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

여기 다음과 같은 bash 기능이 있습니다.hash_hmacPHP에서:

#!/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/^.* //'

다음 통화에서는 키를 헥시트로 제공해야 합니다.

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

AWS에서 CloudFront 엔트리를 무효화하는 bash 스크립트를 작성하려는 사람(저처럼)이 도움이 되었으면 합니다(아직 테스트하지 않았지만 이것이 제 bash 스크립트가 작동하지 않는 원인이고, 제 PHP 스크립트가 작동하지 않는 원인이라고 생각합니다).

node.js가 설치되어 있으면 HMAC-CLI 도구를 사용할 수 있습니다.

npx hmac-cli generate 'value' -h sha1 -s key

반환:

57443a4c052350a44638835d64fd66822f813319

명령줄에서 JWT에 대해 자세히 알아보고 싶은 사용자: cool jwt bash 스크립트

언급URL : https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

반응형