【区块链与密码学】第5-5讲:详解常用哈希函数(三)

深入浅出 区块链密码学(学习笔记1.0)——哈希函数 关于哈希函数的知识点 阅读详情

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

5.5.1 SM3算法简介

SM3是我国商用密码管理局颁布的商用密码哈希函数,广泛应用于:商用密码应用中的辅助数字签名和验证、消息认证码的生成与验证、随机数的生成等领域。SM3在结构上属于基本压缩函数迭代型的哈希函数。

5.5.2 SM3算法描述

输入数据长度为l比特,1≤l ≤264-1;输出哈希值的长度为256比特。

常量与函数

SHA-256算法使用以下常数与函数:

常量

初始值IV=7380166f 4914b2b9 172442d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e。

函数

布尔函数

置换函数

 

其中:∧表示按位“与”;∨表示按位“或” ;¬ 表示按位“补”;⊕表示按位“异或”;<<<表示循环左移;

算法描述

填充

对数据填充的目的是使填充后的数据长度为512的整数倍。因为迭代压缩是对512位数据块进行的,如果数据的长度不是512的整数倍,最后一块数据将是短块,这将无法处理。

设消息m长度为l比特,首先将比特“1”添加到m的末尾,再添加k个“0”,其中,k是满足下式的最小非负整数,l+1+k=448mod512

然后再添加一个64位比特串,该比特串是长度l的二进制表示。填充后的消息m的比特长度一定为512的倍数。

以信息“abc”为例显示补位的过程。a, b, c对应的ASCII码分别是97, 98, 99;于是原始信息的二进制编码为:01100001 01100010 01100011

① 补一个“1” :0110000101100010 01100011 1

② 补423个“0”:01100001 01100010 01100011 10000000 00000000 … 00000000 

③ 补比特长度24 (64位表示),得到512比特的数据:

消息扩展

对一个消息分组B(i)迭代压缩之前,首先进行消息扩展:

将16个字的消息分组B(i)扩展生成如下的132个字,供压缩函数CF使用W0,W1,…,W67,W′0,W′1,…,W′63

消息扩展把原消息位打乱,隐蔽原消息位之间的关联,增强了安全性

消息扩展的步骤如下:

将消息分组B(i)划分为16个字W0,W1,…,W15

-----------

FOR j=16 TO 67

Wj←P1(Wj -16 ⊕Wj−9⊕(Wj−3<<< 15)) ⊕(Wj−13<<< 7) ⊕Wj−6

END FOR

----------

FOR j=0 TO 63

Wj′= Wj⊕ Wj +4

END FOR

迭代压缩处理

将填充后的消息m′按512比特分组:m′= B(0)B(1)…B(n−1),其中:n = (l+k+65)/512

对m′按下列方式迭代压缩://外层迭代

FOR i = 0 TO n-1 

--------

V (i+1)= CF( V(i),B(i) ) 

--------

ENDFOR

其中CF是压缩函数,V (0)为256比特初始值IV,B(i)为填充后的消息分组,迭代压缩的结果为V(n),它为消息m的哈希值.

压缩函数

压缩函数是SM3的核心,令A, B, C, D, E, F, G, H为字寄存器,SS1, SS2, TT1, TT2为中间变量,压缩函数:V( i+1) = CF(V(i),B(i)), 0 ≤i ≤n -1

压缩函数CF的压缩处理://内层迭代

FOR j=0 TO 63 

--------

CF= F(SS1, SS2, TT1, TT2 , A, B, C, D, E, F, G, H ,Wj,W′j) //基本压缩函数 

--------

ENDFOR

SM3算法的迭代压缩流程示意图

基本压缩函数F

SS1 ←((A <<< 12) + E + (Tj<<< j)) <<< 7 

--------

SS2 ←SS1 ⊕(A <<< 12) 

--------

TT1 ←FFj (A,B,C) + D + SS2 +Wj’ 

--------

TT2 ←GGj (E,F,G ) + H + SS1 + Wj  

--------

D ←C 

--------

C ←B <<< 9 

--------

B ←A 

--------

A ←TT1 

--------

H ←G 

--------

G ←F <<<19 

F ←E E ←P0( TT2 )

SM3算法的基本压缩函数示意图

SM3工作全过程

SM3算法的工作全过程示意图

压缩函数的作用

压缩函数是SM3安全的关键。

第一个作用是数据压缩。SM3的压缩函数CF把每一个512位的消息分组B(i)压缩成256位.经过各数据分组之间的迭代处理后把l位的消息压缩成256位的哈希值。

第二个作用是提供安全性。在SM3的压缩函数CF中,布尔函数FFj(X,Y,Z)和GGj(X,Y,Z)是非线性函数,经过循环迭代后提供混淆作用。

置换函数P0(X)和P1(X)是线性函数,经过循环迭代后提供扩散作用.加上压缩函数CF中的其它运算的共同作用,压缩函数CF具有很高的安全性,从而确保SM3具有很高的安全性。

安全性

专业机构设计,经过充分测试和论证

安全性可满足上述应用的安全需求

学者已开展对SM3的安全分析(如缩减轮的分析),尚未发现本质的缺陷

常用的SM3算法就讲到这里啦,下节课我们将学习常用哈希函数在区块链中的应用,敬请期待!

SM3 hash算法原理和硬件实现 算法总结:将输入的数据先进行填充得到N个512比特的数据,然后经过N轮迭代压缩运算,每一轮的具体是先将输入的512比特划分为16个字,用这16个字经过运算获得一些中间变量值,然后用这些中间变量值以及上一次轮的hash值经过64轮的逻辑运算,就可以得到最终的hash值;”,然后再添加64个比特串,比特串是消息长度L的二进制表示,比如消息长度是24个比特,那么添加的64个比特串的二进制表示为 00…V(0)是256比特的初始值,固定且已知,B(i)就是上面的填充分组后的消息,最终结果为V(n) 阅读详情

相关推荐

安全基础学习-SM3加密算法

SM3是一种广泛使用在中国国家标准中的哈希算法,全称为“中国国家密码算法SM3”。它由中国国家密码管理局制定,主要用于数字签名和消息完整性验证。SM3算法与SHA-256在结构上类似,但其设计具有特定的改进以增强安全性。SM3算法生成256位的哈希值,使用了32轮的迭代运算,并且依赖于消息扩展、压缩函数、消息混淆等步骤。

小夭的博客 3485

【SM3哈希算法】算法原理

SM3算法是一种密码散列函数标准,由国家密码管理局发布。它的安全性和SHA-256相当,适用于商用密码应用中的数字签名和验证、消息认证码生成和验证、随机数生成等。

qq_53099119的博客 1万+

区块链与哈希函数

武汉大学《区块链与密码学》课件整理

weixin_62775913的博客 5540

SM3加密算法详解(2021-12-8)

原文作者链接:https://zhuanlan.zhihu.com/p/129692191 国密局官方文档:http://www.sca.gov.cn/sca/xwdt/2010-12/17/content_1002389.shtml 整个算法的执行过程可以概括成四个步骤:消息填充、消息扩展、迭代压缩、输出结果。 文章目录SM3概述消息填充消息扩展迭代压缩输出结果 SM3概述 SM3密码杂凑算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。具体算法标准原始文本参见参考文献[1]。该算法于.

qq_40662424的博客 6万+

解密区块链中的密码学

在这片文章中,我们总结了区块链会用到的一些密码学原语,那什么是密码学“原语”? 不同于操作系统的“原语”概念,(注:操作系统原语是操作系统或计算机网络用语范畴。是由若干条指令组成的,用于完成一定功能的一个过程,具有不可分割性。)密码学原语强调的是“动机”,可以简单理解为:你想做什么事情?比如“加密”、“签名”是个原语,“密钥交换”、“零知识证明”也是个原语。 位于第一层阶层的原语可能一共有十...

宽客在线的博客 6825

国密SM3杂凑算法

SM3算法是由我国著名的密码学家王小云和国内其他专家共同设计的哈希算法,它只能用于加密而不能解密,是一种简单的单向算法。于2010年12月17日经国家密码管理局发布,现已广泛应用于金融、交通、国家电网等重要经济领域,并于2018年10月正式成为ISO/IEC国际标准。SM3算法首先将输入数据按照512位(64字节长度)的大小分成若干组,最后一组不足512位时按规则填充至512位。经过多轮迭代压缩后,输出长度为256位(32字节)的数值。就是对长度为l(l.....................

应无所住而生其心 9933

【区块链】区块链密码学基础

密码学是区块链技术的核心基石,没有现代密码学的支撑,区块链的去中心化、不可篡改等特性将无从谈起。本文将深入浅出地介绍区块链中的密码学基础知识。

鑫宝的博客 1万+

Selenium实战:突破反爬,自动化抓取国家知识产权局专利数据

网络爬虫是数据采集的核心技术,其原理是通过程序模拟浏览器行为,自动访问网页并提取结构化信息。在数据驱动决策的今天,高效获取公开数据对市场分析、技术调研和竞争情报至关重要。然而,面对广泛应用的JavaScript动态渲染和反爬虫机制,传统的静态页面抓取方法往往失效。Selenium作为浏览器自动化工具,通过驱动真实浏览器执行JavaScript,能够有效绕过前端反爬,实现“可见即可得”的数据抓取,在需要与页面进行复杂交互或处理动态内容的场景中价值显著。本文以【专利数据】抓取为例,结合【Selenium】工具,

weixin_33881140的博客 394

【区块链与密码学】第5-1讲:哈希函数简史

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 5.1哈希函数的定义与性质 点宽学园【区块链与密码学】第五单元开课啦!这单元我们将学习哈希函数及其在区块链中的应用。 哈希函数的定义 哈希函数(Hash Function)是一个公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),又称为散列函数、杂...

Digquant的博客 1248

STM32F407单一定时器输出4路不同频率及占空比的PWM波

STM32F407单一定时器输出4路不同频率及占空比的PWM波

qq_43868701的博客 4920

STM32的DMA模块及Protues仿真实验

(一)DMA简介      DMA(Direct Memory Access,直接存储器访问), 用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何 CPU 操作的情况下通过 DMA 快速移动数据。这样节省的 CPU 资源可 供其它操作使用。      STM32F407共有两个 DMA 控制器,总共有 16 个数据流(每个控制器 8 个),每一个 DMA 控制器都用于管理 一个或多

weixin_45930204的博客 2850

【区块链与密码学】第2-3讲:区块链基础技术大剖析之哈希函数

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 2.4.1 哈希函数 区块链作为一个诞生刚到十几年的技术,的确算是一个新兴的概念,但是它所用到的基础技术全是当前非常成熟的技术。可以说是一个技术的“结晶体“。 区块链的基础技术如哈希运算、数字签名、P2P网络、共识算法以及智能合约等,在区块链兴起之前,很多技术已经在各...

Digquant的博客 1600

别让IO口保护二极管坑了你!实测讲解单片机电流倒灌的三种典型症状与防护

本文深入解析单片机电流倒灌的三大典型症状与防护方案,重点分析STM32等单片机在ADC采样异常、系统假死和通信速率异常中的表现。通过实测数据和电路设计建议,提供从基础二极管隔离到专业隔离器件的分级防护策略,帮助工程师有效预防和解决电流倒灌问题。

weixin_29280219的博客 348

密码学在区块链技术中的应用

通过哈希函数,确保了数据的完整性和不可篡改性,为区块链的信任机制提供了坚实的基础。综上所述,密码学在区块链技术中的重要性不可替代,已取得的应用成果令人瞩目,但为了应对不断变化的技术环境和应用需求,进一步的研究和发展是必不可少的。此外,区块链技术的广泛应用和不断拓展的场景对密码学的性能和效率提出了更高的要求。由于哈希函数的特性,即使区块中的数据有极微小的改变,所生成的哈希值也会完全不同。虽然加密能保护我们的交易信息不被别人看到,可要是加密的办法不够好,或者加密的时候出了错,交易信息可能会被泄露。

2401_85754355的博客 2938

【踩坑记录】Latex引文bib报错

VScode+Texlive+Zotero本地论文写作环境踩坑。解决Zotero导出bib文件后tex中通过cite引用时所产生的问题。

weixin_43319948的博客 2825

从流量到凭证:实战解析SMB协议中的NTLMv2/v1哈希提取与破解

本文详细解析了SMB协议中NTLMv2/v1哈希的提取与破解实战技巧。从流量捕获、哈希格式处理到Hashcat高效破解,提供了一套完整的操作指南。文章特别强调了NTLMv2和NTLMv1哈希的区别及处理要点,并分享了防护建议与检测方法,帮助安全人员提升渗透测试效率。

weixin_30642561的博客 116

03 区块链密码学

Hash,一般翻译做散列、杂凑,或者音译为哈希,是把任意长度的输入通过哈希算法变换成固定长度的输出,该输出就是散列值。能够实现该功能的算法叫做哈希算法,能够实现哈希算法要求的函数叫做哈希函数。哈希函数就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。区块链地址是指区块链网络上的标识,经典的地址生成算法由公私钥产生,具有安全性和隐私性。地址可以绑定数字资产,或者链上有价值的数据。

FrancyZhou的博客 894

LCZ数据下载及处理-以重庆市为例(完整Python代码)

LCZ数据下载及处理-以重庆市为例(完整Python代码)

WW、forever的博客 613

【区块链学习笔记】1:比特币中的密码学原理

跟着肖臻老师公开课学习一下区块链技术。

大桔骑士的学习笔记 5698

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 60

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

区块链中的密码学 —— 哈希函数

SHA-256 是。

qq_27510557的博客 1977

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

区块链知识个人总结(一)哈希函数与密码学

密码学中的哈希函数 三个性质 1.collision resistance 个人理解为抵抗哈希碰撞的性质,即能将人为制造哈希碰撞的效率降至非常低下,或者说不可能发生有效的人为制造哈希碰撞的性质。 理解a:这个算法无法被证明。 只可以在长时间的实践中证实。因为源文件可以是真正意义上的无数种,而哈希之后得到的哈希值一定会有穷尽。所以单纯的数学方法无法证明 理解b:这个算法不一定一直有效:。 比如说以前...

weixin_45067603的博客 2163

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【区块链与密码学】第5-3讲:详解常用哈希函数(一)

​ 【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 5.3 SHA-256算法简介 目前常用的哈希函数有三种,分别为SHA-256算法、Keccak算法、SM3算法,今天我们对SHA-256算法进行详细讲解。 概况 SHA系列标准哈希函数是由美国标准与技术研究所(National Institute of Standards ..

Digquant的博客 1234

哈希函数详解:从MD5到SHA-3的密码学基石

哈希函数是现代密码学的核心组件,它将任意长度的输入转换为固定长度的输出(哈希值),具有单向性、抗碰撞性和雪崩效应等安全特性。本文系统解析了哈希函数的定义、性质、典型算法及应用场景。 核心算法包括已淘汰的MD5(128位)、SHA-1(160位),以及当前主流的SHA-2(如SHA-256)和新兴的SHA-3(基于海绵结构)。哈希函数广泛应用于数据完整性校验(如文件下载验证)、密码存储(加盐哈希防彩虹表攻击)、区块链(区块标识)和数字签名等领域。随着算法演进,SHA-256仍是安全推荐标准,而BLAKE3等新

qq2745567641的博客 1953

区块链密码学:原理、技术演进与未来发展趋势

区块链技术依赖于密码学来保障数据的安全性、完整性和不可篡改性。

小宝哥Code的专栏 1734

密码学哈希函数:区块链 “不可篡改” 的核心数字指纹技术

密码学哈希函数的核心是为任意数据生成唯一、不可逆、固定长度的数字指纹,单向性、强抗碰撞性、输入敏感性、固定输出长度四大特性是其核心要求;它是区块链 “不可篡改” 的技术根基,通过构建区块链式结构、默克尔树,实现了数据的安全存储和高效验证;在 Web3 领域,哈希函数还承担着钱包地址生成、密钥安全保护的重要作用,是保障数字资产安全、实现机器信任的基础。简单来说,没有密码学哈希函数,区块链的信任体系就无从谈起,Web3 的数字资产确权、去中心化交易、智能合约执行等所有应用,也都失去了安全支撑。

2401_82363370的博客 1116
上一篇: 【区块链与密码学】第5-4讲:详解常用哈希函数(二)
下一篇: 【区块链与密码学】第6-1讲:什么是数字签名?
Dig Quant
博客等级 码龄7年 124粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值