最近的 CryptoJS 版本支持 SHA3 散列。
SHA3 可以输出不同的哈希大小,包括 512 位(默认)和 256 位。这两个工作正常:
var sha3_512_hash = CryptoJS.SHA3( 'test' );
var sha3_256_hash = CryptoJS.SHA3( 'test' , { outputLength:256 } );
同样,CryptoJS 也可以计算 HMAC 值。但是,我不知道如何在那里更改默认输出大小:
var sha3_512_hmac = CryptoJS.HmacSHA3( 'test' , 'key' );
var sha3_256_hmac = CryptoJS.HmacSHA3( 'test' , 'key' , { outputLength:256 } );
第一个工作正常(结果是一个 512 位的 hmac 值)但第二个是相同的(即也是 512 位),就好像它忽略了 {outputLength:256} 参数!
这是一个现场示例: http: //jsfiddle.net/M8xf3/(使用 CryptoJS 3.1.2 中的 hmac-sha3.js)
有谁知道如何创建基于 256 位 SHA3 的 HMAC 哈希?
PS 对于 SHA2 系列函数,CryptoJS 对每个输出大小(即 HmacSHA256 和 HmacSHA512)都有单独的 Hmac 函数。但这似乎不是 SHA3 的情况?