
압축을 풀려고 했던 바이낸스에서 유닉스에 대한 다음 명령을 발견했습니다. 여기를 보아라:https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md
(섹션: POST /api/v1/order에 대한 서명된 끝점 예)
openssl dgst -sha256 -hmac
내가 이해하는 것은 다이제스트를 생성하기 위해 openssl 명령을 호출하는 것이며, 다이제스트는 표준 사양에 동의된 대로 sha256 종류가 될 것입니다. 내가 이해하지 못하는 것은 깃발이다 -hmac
. 그것은 무엇이며 수학적 수준에서 어떤 역할을 합니까?
문제 해결을 위한 나의 시도:
openssl -hmac
Google에서 and 로 검색했지만 openssl dgst -hmac
상위 10개 결과는 소용이 없었습니다. 그래서 경험이 많은 사용자에게 물어보는 것이 더 나을 것이라고 생각합니다.
업데이트:
이 문서에는 플래그가 언급되어 있지 않습니다.https://www.mkssoftware.com/docs/man1/openssl_dgst.1.asp그래서 나는 그것이 암호화 목적이 없을 수도 있다고 믿기 시작했습니다. 지금은 확실하지 않지만.
이 질문에 언급된 플래그와 유사한 것을 발견했습니다.https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash
답변1
HMAC는 키 해시라고도 합니다. 따라서 서명 생성 중에 사용된 것과 동일한 키가 있는 경우에만 확인 중에 동일한 해시를 생성할 수 있습니다. MAC의 결과는 다음과 같습니다.인증 태그.
HMAC는 내부적으로 사용되는 해시(귀하의 경우 SHA-256)에 대한 두 번의 호출을 사용하는 특수 구성이며 다른 것은 사용하지 않습니다.암호화 기본 요소. 그러므로 이는 구체적인 것으로 볼 수 있다.방법해시 자체의. 따라서dgst.
코드에서 누락된 것은 키가 있는 해시를 생성하는 데 필요한 키 데이터입니다. 이는 이후에 제시되어야 합니다 -hmac
. 불행하게도 openssl
키의 바이너리 형식이 필요합니다. 자세한 내용은 다음을 참조하세요.OpenSSL 메일링 리스트에 있는 이 오래된 대화.
편집 #1: 좀 더 자세히 살펴보면, 키를 16진수로 지정하려면 다음과 같은 줄을 사용할 수 있습니다.
echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304
함수의 출력은 두 번째 해시 실행의 출력이므로 해시/HMAC 결과의 크기만 보면 SHA-256과 구별할 수 없습니다. 물론 내용은 단순히 데이터를 해싱하는 것(또는 키와 데이터를 연결한 것)과는 완전히 다릅니다.
편집 #2: 그러나 키를 지정하지 않았으므로 실제로 HMAC를 건너뛰고 SHA-256이 사용됩니다. 이것은 버그로 표시되었습니다.여기
답변2
당신이 iOS(혹은 Mac OS...)를 사용하고 있다면 2센트가 필요합니다. 제가 썼습니다.
https://apps.apple.com/it/app/hmac-sha256generator/id6448465719?l=en