Към съдържанието

Генератор на HMAC-SHA256

Създайте HMAC-SHA256 подпис от съобщение и таен ключ. Инструментът кодира и двете като UTF-8, прилага конструкцията HMAC от RFC 2104 с SHA-256 и връща маркер от 256 бита в hex или Base64. Разработчиците го използват за отстраняване на грешки в подписите на уебхукове от услуги като Stripe, GitHub или Slack, за подписване на заявки API и за сравняване на резултатите със собствения си код. Ключът никога не се връща и не се записва в регистрационни файлове.

Нулиране

Често задавани въпроси

Какво е HMAC-SHA256?

HMAC-SHA256 е код за удостоверяване на съобщения, изграден с SHA-256 и таен ключ, както е определено в RFC 2104. Само човек с ключа може да изчисли правилния маркер за дадено съобщение. Резултатът е 32 байта или 64 hex знака.

Как да проверя подпис на уебхук?

Поставете точното сурово тяло на заявката като съобщение и тайната за подписване като ключ, след което сравнете резултата със заглавката на подписа. Много услуги подписват комбинация от данни, например времевия печат на Stripe, точка и тялото, затова съставете съобщението според описанието в документацията им. Дори един променен байт води до различен маркер.

Има ли известен тестов вектор?

Тестов случай 2 от RFC 4231 използва ключа Jefe и съобщението what do ya want for nothing? и очаква 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Този инструмент връща точно тази стойност.

Как се кодират ключът и съобщението?

И двете се кодират като UTF-8 текст. Ако тайната ви е предоставена в hex или Base64 формат, както правят някои услуги, байтовете се различават от видимия текст и първо трябва да декодирате ключа в собствения си код. Интервалите и новите редове имат значение и в двете полета.

Съхранява ли се тайният ми ключ?

Не. Ключът се използва само за изчисляване на маркера по време на заявката. Не се включва в отговора, не се записва в регистрационни файлове и не се съхранява.

Може ли ключът да е празен или много дълъг?

HMAC приема ключове с произволна дължина, включително празен ключ. Ключовете над 64 байта първо се хешират с SHA-256, както е посочено в RFC. За реална употреба изберете случаен ключ с дължина поне 32 байта.

Да избера ли hex или Base64?

Използвайте формата, който изпраща другата страна. GitHub и Stripe използват hex, докато Slack добавя префикса v0= към hex, а много системи, базирани на AWS и JWT, използват Base64. И двата формата кодират едни и същи 32 байта.

Едно и също ли е HMAC-SHA256 и SHA-256 на слепените ключ и съобщение?

Не. HMAC хешира съобщението два пъти с вътрешни и външни ключове с допълване, което предпазва от атаки с удължаване на дължината. Слепването на ключа и съобщението и еднократното им хеширане дава различен и по-слаб резултат.

Как да сравнявам подписи в кода си?

Използвайте функция за сравнение с постоянно време, като crypto.timingSafeEqual в Node.js или hmac.compare_digest в Python. Обикновеното сравнение на низове може да разкрие информация за времето на изпълнение, свързана с очаквания маркер.

Какъв може да е максималният размер на съобщението?

Съобщението и ключът заедно могат да са до 5 MiB текст. Това покрива типичните полезни товари на уебхукове и заявки API.

За OneClick Pro

OneClick Pro е безплатна колекция от над 150 уеб инструмента за ежедневна работа: преобразуване на изображения и единици, форматиране и валидиране на код, проверка на домейни и SEO, както и работа с текст, дати и числа. Всеки инструмент работи без регистрация или абонамент, а въведеното от вас се използва само за изчисляване на резултата и никога не се съхранява. Използвайте го като бърз набор от инструменти за еднократни задачи или добавете в отметките инструментите, на които разчитате всеки ден.