与摘要长度固定的哈希不同,XOF 的输出长度由调用方指定为 d 位;它的抗碰撞强度为 min(d/2, 容量/2),抗原像强度为 min(d, 容量/2)。SHAKE128 的容量为 256 位,SHAKE256 为 512 位。向 SHAKE256 请求 32 字节或 64 字节的输出,得到的是同一个输出流的前缀,因此调用方必须对不同用途做域分隔;cSHAKE(SP 800-185)增加了显式的定制字符串。
SHAKE 在后量子密码中无处不在:ML-KEM 和 ML-DSA 用 SHAKE128 扩展公开矩阵,用 SHAKE256 派生其他值(FIPS 203 和 FIPS 204 中称为 XOF、H、J 和 G),SLH-DSA 有基于 SHAKE 的参数集,Ed448 也用 SHAKE256 做哈希。FIPS 186-5 还允许在 RSASSA-PSS 中将 SHAKE 用作哈希函数和掩码函数。
标识符:OID 2.16.840.1.101.3.4.2.11(SHAKE128)和 …2.12(SHAKE256);OpenSSL 中为 shake128 和 shake256,配合 -xoflen 使用;Python 中为 hashlib.shake_256(data).digest(n)。