在安全散列标准SHA-3的选拔中涌现了很多优秀的哈希算法,包括Blake、Grostl、Keccak等。下面我们要了解的就是入选SHA-3最后一轮竞争的JH算法。
JH算法简介
Hash函数的设计通常采用迭代结构,其迭代函数的设计又借鉴了很多分组密码的思想。JH算法采用了新的压缩函数结构,其核心压缩函数就是一个分组密码,该分组密码的设计与美国高级加密标准AES类似,通过固定密钥对消息加密,并将部分消息反馈以达到消息压缩的目的。
JH算法过程
JH算法主要由数据填充、数据分块、设置哈希初值、计算哈希终值、获取信息摘要等5个步骤构成:
- 将长度为L的消息M进行数据填充,得到的数据长度为512bit的倍数。
- 把消息M分割为N个512bit的数据M(i)作为压缩函数F8的输入。
- 进行哈希初值H(0)的设置,它是由初始化值H(-1)及消息M(0)通过压缩函数F8计算得出的。
- 通过压缩函数F8计算得出哈希终值H(N),其中,压缩函数F8的另一个输入为哈希值H(i),它是指第i个512bit的消息M(i)通过压缩函数F8计算出的哈希值。
- 通过截取哈希终值H(N)的高n位获取消息摘要。
JH算法的优缺点
由于JH算法采用了“宽轨迹策略”来设计分组密码,所以它的安全性比较优秀,能够抵抗已知的攻击。另外,JH算法采用了明显的扩散层,使得比特追踪法很难适用于这类Hash函数的安全性分析。并且JH算法支持224bit、256bit、384bit和512bit四种长度的散列。
但JH算法在硬件实现中存在不足,在一些资源占用少、功耗要求低的应用中很难做到低功耗运行,算法的吞吐率较低。
免责声明:素材源于网络,如有侵权,请联系删稿。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。