HKDF 提取與擴展
使用 HKDF 派生密鑰,或分別執行提取與擴展;明確設置哈希、鹽值、上下文字節和輸出長度。
提取、擴展或兩者組合
HKDF 將輸入密鑰材料與應用所需輸出密鑰分開處理。提取返回固定長度 PRK;擴展接收至少與哈希輸出等長的 PRK、可選上下文和輸出長度。組合模式執行兩步;示例復現 RFC 5869 測試用例 1。
UTF-8、十六進制、Base64、Base64url 輸入都具有明確字節含義,支持空鹽值與空 info。可選隨機鹽會寫入 JSON 記錄,但記錄不包含 IKM 或輸入 PRK;派生密鑰本身仍是秘密材料。
長度、上下文和適用用途
輸出可為 0 至 255×HashLen 字節:SHA-256 最多 8160、SHA-384 最多 12240、SHA-512 最多 16320 字節。提取固定輸出 HashLen 字節。IKM 和 info 各限 64 KiB,鹽值限 1 KiB,單獨擴展的 PRK 限 4 KiB。
HKDF 用於密鑰派生和上下文區分,不用於提高密碼猜測成本,也不能憑空增加弱輸入缺少的熵。協議應同時保留哈希、鹽值、info、階段和長度;原始輸出不包含這些信息,JSON 記錄則明確列出。
參考
常見問題
為什麼改動 info 會改變輸出?
info 用於區分不同用途的密鑰。應採用協議明確的值,並在再次派生同一密鑰時復現完全相同的字節。
空鹽值是否表示跳過提取?
不表示。組合模式和提取模式仍會執行提取,只有擴展模式直接使用提供的 PRK。
輸入會上傳或保存嗎?
處理在瀏覽器中完成。工具不會將密鑰、密碼或內容放入 URL、本地存儲或發送至處理 API。清除會移除可見輸入與輸出,但不保證安全擦除由瀏覽器管理的內存。