Blake算法的流程

关于Blake算法的网上介绍已经有一部分了,但是关于Blake的流程层面的介绍还是不多的,所以这篇文章的主要目的是介绍Blake的流程,之后会分享代码出来。
声明!本文是为了帮助新手理解Blake算法的,本文不包含代码,需要代码的请关注我,过几天就发出来(其实网上其他博主的代码已经写的挺好的了呢)

前言

BLAKE也需要两个主要的计算过程:预处理过程、和 轮循环计算。
和SHA不同的是,BLAKE不需要对变量进行初始化;
轮循环计算过程,需要把 计数器值、盐值、常量输入消息加入轮循环计算中,按照压缩计算法进行计算,每一轮生成的状态变量用于下一轮循环计算,
在这里插入图片描述
BLAKE有四组输入数据和一组常量:
初始哈希值H[8];输入信息块M;盐值S[4];计数器T[2];常量C;

1. 预处理过程

前三步和SHA2的算法一样,只有变量初始化

  1. 信息填充;
  2. 分割消息块;
  3. 变量初始化:⊕表示异或运算
    在这里插入图片描述
    通过公式计算出16个V,
    其中,计数器T的选取原则是:当最后一个消息块不包含输入消息的比特数时,则计数器为0;前面计数器的值为相应消息块中包含原始消息块中比特数的累加。
    比如:输入消息为600bit,填充之后是1024bit,分割成两个512bit的消息块,此时计数器的值为t0=512,t1=600。 如此可以保证即使两组不同长度的输入消息,再经过填充之后的长度相等,仍可以有不同的计数器值。
    盐值S—自定义的,一般选取固定的;
    常量C—自定义的,一般选取固定的;

2. 循环压缩计算

16个变量V,作为14轮循环压缩的输入,每一轮的循环压缩表示为:
在这里插入图片描述

第r轮的第i个G功能函数的计算规则如下:
在这里插入图片描述

其中“+”表示模加运算,“>>>”表示有循环移位,σ是输入的16个消息字或者常量的第几个消息字,可以根据表格进行置换:
在这里插入图片描述

置换规则中r最大是10,后四轮的规则是当前循环数 mod 10 所得,如:第13轮的置换规则是σ13 mod 10=σ3

3. 最后

经过14轮循环压缩得到16个变量,V0—V15,运算之后得到最终哈希值:
在这里插入图片描述

其中:0≤i≤7 , j= i mod 4,h_i^r表示第r轮哈希值的第i个字。

如果觉得本文有用的话,请点个赞啊!
之后会分享出来Blake2和Blake3的相关代码,可以直接烧录到单片机中的那种,记得点赞啊!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值