Blake算法的流程

2023-10-11 01:49
文章标签 算法 流程 blake

本文主要是介绍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的相关代码,可以直接烧录到单片机中的那种,记得点赞啊!

这篇关于Blake算法的流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184646

相关文章

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

一个Java的main方法在JVM中的执行流程示例详解

《一个Java的main方法在JVM中的执行流程示例详解》main方法是Java程序的入口点,程序从这里开始执行,:本文主要介绍一个Java的main方法在JVM中执行流程的相关资料,文中通过代码... 目录第一阶段:加载 (Loading)第二阶段:链接 (Linking)第三阶段:初始化 (Initia

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分