Hawkynt

SP800-56A

NIST SP 800-56A Revision 3 single-step key derivation function for key agreement schemes. Uses concatenation format: counter Β  Z Β  FixedInfo with hash or HMAC-based derivation.

Properties

Property Value
Category Key Derivation Functions
Sub-category Key Agreement KDF
Security status πŸ›‘οΈ Secure
Complexity Intermediate
Inventor National Institute of Standards and Technology (NIST)
Year 2018
Origin πŸ‡ΊπŸ‡Έ United States
Source algorithms/kdf/sp800-56a.js

Parameters

Parameter Supported values
Output sizes 1 byte (8 bits) to 8191 bytes (65528 bits)

Capabilities

Flag Value
SaltRequired No

Security

Status: πŸ›‘οΈ Secure

Known vulnerabilities

Issue Description Mitigation
Weak Hash Function Avoid SHA-1 for cryptographic security; use SHA-256 or stronger hash functions β€”
Insufficient Shared Secret Entropy Ensure shared secret Z has sufficient entropy from secure key agreement β€”

Documentation

References

Test vectors

15 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.

Vector 1 β€” SP800-56A SHA-1 Vector #1

Field Value
salt (empty)
label 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420
hashFunction SHA-1
outputSize 4
input 51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a
expected 049b3766

Vector 2 β€” SP800-56A SHA-1 Vector #2

Field Value
salt (empty)
label f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef
hashFunction SHA-1
outputSize 5
input b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380
expected b7d5840565

Vector 3 β€” SP800-56A SHA-1 Vector #3 - 33 byte output

Field Value
salt (empty)
label ea0e5d80a76bb5063148cc997b76da2d895bc3e4dff37c48579cc4e580f1fda3
hashFunction SHA-1
outputSize 33
input 7ce80e8b0480cde01fec587fe7045a8e
expected 176e355aaa4a2209a7cad190d2c76b78 b12cdf83add1387709c30750110e5730 21

Vector 4 β€” SP800-56A SHA-224 Vector #1

Field Value
salt (empty)
label 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420
hashFunction SHA-224
outputSize 4
input 51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a
expected e14ba657

Vector 5 β€” SP800-56A SHA-224 Vector #2

Field Value
salt (empty)
label f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef
hashFunction SHA-224
outputSize 5
input b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380
expected 2c92bd1085

Vector 6 β€” SP800-56A SHA-256 Vector #1

Field Value
salt (empty)
label 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420
hashFunction SHA-256
outputSize 4
input 51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a
expected f62ebab9

Vector 7 β€” SP800-56A SHA-256 Vector #2

Field Value
salt (empty)
label f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef
hashFunction SHA-256
outputSize 5
input b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380
expected 39cb7a8753

Vector 8 β€” SP800-56A SHA-256 Vector #3

Field Value
salt (empty)
label 9d4169cc1427f2a407191b84ab7abaace66a95ca26ab0915803106315080f331
hashFunction SHA-256
outputSize 6
input ba68a99d6eb2affd8bd039ab13c3a3aa 9f02c6c11fde8570429d2fce61d97d81 c51cdbb8ff143d04
expected f7632ae67c0b

Vector 9 β€” SP800-56A SHA-256 Vector #4

Field Value
salt (empty)
label 430312b971580ac2abbe70998f136d3cace833e0b165b74c351afe5fa20d1eb7
hashFunction SHA-256
outputSize 7
input dc5e08ed643fc5aca38cdf756ca0d7d6 78f3b241fa61976eeb16a904fc83e032 6e1cbd639a9591899adf8de1fc1b1b5d
expected 706f616063adba

Vector 10 β€” SP800-56A SHA-256 Vector #5

Field Value
salt (empty)
label edefb6c58327538f3b4f7e4b9af30c7025122de56b7e682e56d7efe433c2ca85
hashFunction SHA-256
outputSize 8
input 2897b5b2f94be3550bac75877817a0f4 7836a57a5ff777345daa6e5f0599d4ab 8d4c59c62067aedf00c02dda77e4af87 1cda63fbde164edc
expected 35f489fc6a91be16

Vector 11 β€” SP800-56A SHA-384 Vector #1

Field Value
salt (empty)
label 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420
hashFunction SHA-384
outputSize 4
input 51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a
expected 894340ad

Vector 12 β€” SP800-56A SHA-384 Vector #2

Field Value
salt (empty)
label f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef
hashFunction SHA-384
outputSize 5
input b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380
expected c4159fbaea

Vector 13 β€” SP800-56A SHA-512 Vector #1

Field Value
salt (empty)
label 6c5544797a91115dc3330ebd003851d239a706ff2aa2ab70039c5510ddf06420
hashFunction SHA-512
outputSize 4
input 51373e8b6fdec284db569204ca13d2caa23bd1d85dcab02a
expected 6f015ea0

Vector 14 β€” SP800-56A SHA-512 Vector #2

Field Value
salt (empty)
label f9c06213585289654996f0c40467b9a69480ab8d5b16a08c7a0c5f1570f966ef
hashFunction SHA-512
outputSize 5
input b2f3a2d4fbb002d9f0b51258af43e98a5423fb145257ae460342361c2199d380
expected 189c0f84b0

Vector 15 β€” SP800-56A SHA-512 Vector #3

Field Value
salt (empty)
label 9d4169cc1427f2a407191b84ab7abaace66a95ca26ab0915803106315080f331
hashFunction SHA-512
outputSize 6
input ba68a99d6eb2affd8bd039ab13c3a3aa 9f02c6c11fde8570429d2fce61d97d81 c51cdbb8ff143d04
expected b7269e8fa844

← All algorithms