Blake2b算法 php,BLAKE及BLAKE2算法详解

本文详细介绍了 Blake2b 哈希算法,包括其基本原理、BLAKE 算法背景、BLAKE2 的改进以及 BLAKE2b 和 BLAKE2s 的区别。此外,还提到了 Blake2b 在区块链数字货币领域的应用,如 Decred、Sia 和 Verge。文章提供了 BLAKE2 的开源代码链接,并给出了不同算法对空字符串的哈希结果。
摘要由CSDN通过智能技术生成

1 简介

哈希算法 (Hash Algorithm) 是将任意长度的数据映射为固定长度数据的算法,也称为消息摘要。

一般情况下,哈希算法有两个特点:

原始数据的细微变化(比如一个位翻转)会导致结果产生巨大差距

运算过程不可逆,理论上无法从结果还原输入数据

因此,哈希算法主要用于数据完整性校验和加密/签名。而哈希算法的安全性就在于碰撞难易度,即已知结果,构建出具有相同结果的输入数据的难易度。

2 BLAKE

BLAKE算法于2008年提出,它包含两个版本,一种基于32位word用于产生最长256位的哈希结果,一种基于64位word用于产生最长512位的哈希结果,BLAKE算法核心操作是不断地将8个散列中间结果和16个输入word进行组合,从而产生下一轮组合的8个中间结果。按照最终截断的哈希长度,BLAKE-256和BLAKE-224使用32位字分别产生256位和224位的哈希结果(也称消息摘要),而BLAKE-512和BLAKE-384使用64位字并产生512位和384位哈希结果。算法核心变量如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 typedef struct

2 {3 uint32_t h[8], s[4], t[2];4 intbuflen, nullt;5 uint8_t buf[64];6 } state256;7

8 typedef state256 state224;9

10 typedef struct

11 {12 uint64_t h[8], s[4], t[2];13 intbuflen, nullt;14 uint8_t buf[128];15 } state512;16

17 typedef state512 state384;18

19 const uint8_t sigma[][16] =

20 {21 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},22 {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},23 {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},24 { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},25 { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值