口令派生接口规范 0.1.0
派生PBKDF2SHA256十六进制 按 RFC 8018 的 PBKDF2 计算,伪随机函数是 HMAC-SHA-256。参数依次是口令、盐和迭代次数:口令与盐都取字符串的原始 UTF-8 字节,盐是文字,不做十六进制解码;输出 32 字节,写成 64 个 ASCII 小写十六进制字符,不加前缀、分隔符或换行。
口令不得为空。迭代次数须为正整数;宿主可以设置上限,超过上限时调用失败,云工适配的上限是 100000(Cloudflare Workers 的 WebCrypto 限制)。空口令、迭代次数越界或宿主密码原语失败时,调用失败并抛出豫言异常。相同输入在所有宿主必须得到相同结果。
一致性样例
| 口令 | 盐 | 迭代次数 | 结果 |
| --- | --- | --- | --- |
| password | salt | 1 | 120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b |
| password | salt | 2 | ae4d0c95af6b46d32d0adff928f06dd02a303f8ef3c251dfd6e2d85a95474c43 |
| password | salt | 4096 | c5e478d59288c841aa530db6845c4c8d962893a001ce4e11a4963873aa98134a |
边界
本包只做密钥派生,不替使用者选择盐、迭代次数或存储格式,也不提供常量时间比较;这些属于使用者。派生发生在宿主的原生代码里,应用不应在豫言中自行实现 PBKDF2,否则百万级哈希运算会超出 Worker 的 CPU 时限。