Hash-based Message Authentication Code using SHA-256 as defined in RFC 2104 and RFC 4231. Combines cryptographic hashing with a secret key to provide authentication and integrity verification.
| Property | Value |
|---|---|
| Category | Message Authentication |
| Sub-category | HMAC |
| Security status | ๐ก๏ธ Secure |
| Complexity | Beginner |
| Inventor | Mihir Bellare, Ran Canetti, Hugo Krawczyk |
| Year | 1996 |
| Origin | ๐บ๐ธ United States |
| Source | algorithms/mac/hmac-sha256.js |
| Parameter | Supported values |
|---|---|
| MAC sizes | 1 byte (8 bits) to 64 bytes (512 bits) |
| Output sizes | 1 byte (8 bits) to 32 bytes (256 bits) |
| Flag | Value |
|---|---|
NeedsKey |
Yes |
Status: ๐ก๏ธ Secure
No vulnerabilities are recorded for this implementation.
6 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 โ RFC 4231 Test Case 1 - โHi Thereโ
| Field | Value |
|---|---|
key |
0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b |
input |
4869205468657265 |
expected |
b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7 |
Vector 2 โ RFC 4231 Test Case 2 - โwhat do ya want for nothing?โ
| Field | Value |
|---|---|
key |
4a656665 |
input |
7768617420646f2079612077616e7420666f72206e6f7468696e673f |
expected |
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 |
Vector 3 โ RFC 4231 Test Case 3 - 50 bytes of 0xDD
| Field | Value |
|---|---|
key |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
input |
dddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddd dddd |
expected |
773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe |
Vector 4 โ RFC 4231 Test Case 4 - 50 bytes of 0xCD
| Field | Value |
|---|---|
key |
0102030405060708090a0b0c0d0e0f10111213141516171819 |
input |
cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd cdcd |
expected |
82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b |
Vector 5 โ RFC 4231 Test Case 6 - Key > Block Size
| Field | Value |
|---|---|
key |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa |
input |
54657374205573696e67204c61726765 72205468616e20426c6f636b2d53697a 65204b6579202d2048617368204b6579 204669727374 |
expected |
60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54 |
Vector 6 โ RFC 4231 Test Case 7 - Large Key and Data
| Field | Value |
|---|---|
key |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa |
input |
54686973206973206120746573742075 73696e672061206c6172676572207468 616e20626c6f636b2d73697a65206b65 7920616e642061206c61726765722074 68616e20626c6f636b2d73697a652064 6174612e20546865206b6579206e6565 647320746f2062652068617368656420 6265666f7265206265696e6720757365 642062792074686520484d414320616c 676f726974686d2e |
expected |
9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2 |