哈希算法介绍---SHA256

建议
  • 大家可以先学习SHA1再来看本文,个人感觉这样理解会比较好

SHA256算法流程

  • 常量定义—建议大家直接看官方手册
    • SHA256算法中用到了8个哈希初值以及64个哈希常量
      • SHA256算法的8个哈希初值如下:

        在这里插入图片描述

      • 64个哈希常量
        在这里插入图片描述

  • 信息预处理
    SHA256算法中的预处理就是在想要Hash的消息后面补充需要的信息,使整个消息满足指定的结构。
    • 信息的预处理分为两个步骤:附加填充比特和附加长度
    • 附加填充比特
      • 报文末尾进行填充,使报文长度在对512取模以后(本质上就是将报文长度以512切块,并在最后一块进行补充长度信息)的余数是448。填充是这样进行的:先补第一个比特为1,然后都补0,直到长度满足对512取模后余数是448。
      • 需要注意的是,信息必须进行填充,也就是说,即使长度已经满足对512取模后余数是448,补位也必须要进行,这时要填充512个比特。因此,填充是至少补一位,最多补512位。
    • 附加长度
      • 附加长度值就是将原始数据(第一步填充前的消息)的长度信息补到已经进行了填充操作的消息后面。
        SHA256用一个64位的数据来表示原始消息的长度。
      • 因此,通过SHA256计算的消息长度必须要小于2^64 ,当然绝大多数情况这足够大了。
      • 长度信息的编码方式为64-bit big-endian integer
  • 信息摘要的计算
    • 首先,将消息分解成N个512bit大小的块。其实就是类似SHA1将消息分解。

    • 对于分解后的512bit再次拆分为16*32bit大小,这也是我们生成计算式中W_t的依据。

    • 我们对于摘要的计算,本质上就是每轮(512bit中)进行64次计算。计算的概念如下图所示。

      在这里插入图片描述

  • 逻辑计算分析
    • 针对上图中的逻辑计算进一步分析
    • 类似于SHA1,我们首先定义W_t和K_t的获取方式
      • W_t的定义如下
        在这里插入图片描述
      • K_t的定义是第t个密钥,对应我们上文提到的64个常量。
      • ABCDEFGH一开始的初始值分别为H_{i-1}(0),H_{i-1}(1),…,H_{i-1}(7) 。
      • 一些逻辑计算的符号规定
        在这里插入图片描述
        在这里插入图片描述
    • 64轮逻辑计算伪代码(建议参考官方文档)
      在这里插入图片描述
  • SHA256计算图总结
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/299414.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的NPI项目之Android电源系列(四) -- 关于剩余充满时间的问题的代码跟踪-max1720x_battery.c qpnp-smb2.c

从我的NPI项目之Android电源系列(三), 能够看出,healthd是通过读取/sys/class/power_supply/battery/time_to_full_now而进行充满剩余时间的。 在/sys/class/power_supply/battery/...目录下有很多文件,具体内容如下: /sys/class…

面向对象编程(中级)(蹭)

面向对象编程(中级) 1、包 (1) 什么是包? 在Java中,包(Package)是用于组织和管理类以及其他Java 程序元素的一种机制。它是一种命名空间,可以将相关的类和接口组织在一…

【并发编程篇】源码分析,手动创建线程池

文章目录 🛸前言🌹Executors的三大方法 🍔简述线程池🎆手动创建线程池⭐源码分析✨代码实现,手动创建线程池🎈CallerRunsPolicy()🎈AbortPolicy()🎈DiscardPolicy()🎈Dis…

JOSEF约瑟LB-8断相闭锁继电器 额定电压 100V 额定频率 50Hz 面板嵌入式安装

系列型号 LB-7有电闭锁继电器 LB-1D型有电闭锁继电器 LB-8闭锁继电器 1用途 LB-8闭锁继电器用于电厂和变电站内,作为高压母线合接刀闸的闭锁元件。以防止高压母线带电时接地刀闸。 2接线图 接线图 3技术参数与特性 动作特性:继电器施加三相交流…

MongoDB数据库本地部署并结合内网穿透实现navicat公网访问

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

TensorFlow 模型中的回调函数与损失函数

回调函数 tf.keras 的回调函数实际上是一个类,一般是在 model.fit 时作为参数指定,用于控制在训练过程开始或者在训练过程结束,在每个 epoch 训练开始或者训练结束,在每个 batch 训练开始或者训练结束时执行一些操作,…

FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势

FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势 本章节主要参考书籍《Xilinx Zynq-7000 嵌入式系统设计与实现 基于ARM Cortex-A9双核处理器和Vivado的设计方法 (何宾,张艳辉编著)》 本章节主要讲述FPGA-ZYNQ-7000 SoC在嵌入式系统中的优势,学习笔…

调用openssl api函数C代码生成CSR文件

概述: 本文基于本人之前的一篇文章的延伸,调用openssl api函数C代码生成证书:https://blog.csdn.net/shenweihong/article/details/125140149, 本文使用的公钥类型RSA,签名私钥类型也是RSA 软件环境: op…

数据通信网络基础华为ICT网络赛道

目录 前言: 1.网络与通信 2.网络类型与网络拓扑 3.网络工程与网络工程师 前言: 数据通信网络基础是通信领域的基本概念,涉及数据传输、路由交换、网络安全等方面的知识。华为ICT网络赛道则是华为公司提出的一种技术路径,旨在通…

大模型做实体识别任务的原理

1、背景 命名实体识别(named entity recognition,NER):通常是一个序列标注的任务,常见的模型框架有:LSTM-CRF、BERTBILSTMCRF等,该种任务通常被成为flat NER即:每一个token只分配一…

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据

20231225使用亿佰特的蓝牙模块dongle协议分析仪E104-2G4U04A抓取BLE广播数据 结论:硬件蓝牙分析仪 不一定比 手机端的APK的效果好! 亿佰特E104-2G4U04A需要3片【单通道】,电脑端的UI为全英文的。 BLE-AnalyzerPro WCH升级版BLE-PRO蓝牙分析仪…

Arduino驱动BME680四合一传感器模块

目录 一、简介二、技术参数三、使用方法四、实验现象 一、简介 点击图片购买 GYMCU680 是一款低成本空气检测模块,工作电压 3-5v 功耗小,体积小。其工作原理,是通过 MCU 读取 BME680传感器数据,经过算法得到,温湿度&am…