SHAKE256 是 SHA-3 系列中的一种可扩展输出函数(XOF),基于 Keccak 算法设计。它允许生成任意长度的哈希值,适用于需要灵活输出长度的场景,例如数字签名和密钥生成。
站长发现:很多在线工具站点、技术文章博客网站,把 shake128、shake256 认知为加密函数,这是错误的!
核心定义与特性
- 本质:FIPS 202 标准规定的可输出任意长度摘要的密码学哈希函数(XOF),不可用于加密解密,仅用于生成哈希值。
- 安全强度:提供 256 位抗碰撞和原像攻击安全性。("256"指安全强度,非固定输出长度)。
- 输出特性:输入任意长度数据,可生成任意指定长度的哈希输出(如 256 位、512 位或更长),区别于 SHA-256 的固定 256 位输出。
- 算法基础:基于 Keccak 海绵结构,是 SHA-3 家族成员,由 NIST 标准化 。
- 常见误区:名称含"256"易被误认为类似 SHA-256 的固定长度哈希,实则为可变长度。它不具备加密、解密功能,不存在有秘钥哈希这个说法。
主要应用场景
- 需要可变长度哈希输出的场景(比如生成自定义长度的密钥材料、随机数种子)。
- 扩展用途:作为派生函数生成多个关联哈希值,或用于特定协议需动态长度摘要的情况。
- 高安全需求:替代固定长度哈希,在需更高灵活性且保持 256 位安全强度的系统中使用。
与 SHA-256 的关键区别
- 输出长度:SHA-256 固定 256 位;SHAKE256 可任意设定长度。
- 功能定位:两者均为单向哈希,都是非加密算法。SHAKE256 多出的“可伸缩性”是其两者的核心差异。
- 安全参数:SHAKE256 的"256"代表安全强度等级,SHA-256 的"256"代表实际输出位数。
若需数据保密(加密),应使用 AES 等非对称/对称加密算法;若需完整性校验或指纹生成,SHAKE256 是 SHA-3 体系下支持可变输出的专业选择。