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_hmac
PHP에서:
#!/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
'programing' 카테고리의 다른 글
키를 누른 이벤트 핸들러 입력 (0) | 2023.04.21 |
---|---|
SQL Server에서 사용자 정의 테이블 유형 변경 (0) | 2023.04.16 |
Bash 파일 확장자는 무엇입니까? (0) | 2023.04.16 |
날짜에서 요일 이름을 얻으려면 어떻게 해야 하나요? (0) | 2023.04.16 |
MS Excel에서 셀 값을 새 행과 비교하려면 어떻게 해야 합니까? (0) | 2023.04.16 |