密码学基础:搞懂Hash函数SHA1、SHA-2、SHA3(1)

news2024/12/24 10:19:05

目录

1.消息摘要(Hash)

2.SHA-1

3.SHA-2

4.小结


1.消息摘要(Hash)

Hash函数是一种单向密码体制,把任意长度的输入经过变换得到一个固定长度的输出,同时它还具备单向性,只能从明文到密文,不能逆向,正是由于Hash函数的单向性和输出长度固定的特性,使得其广泛应用在数据完整性验证和数字签名等领域。

常见Hash函数基本采用迭代结构,接收输入消息M,将其拆分为n个固定长度分组,如果最后一个数据块不满足要求,则需进行填充;该算法重复使用压缩函数f,进行计算得到最终输出,如下图所示:

图 1 Hash函数过程

常见的函数包含SHA-1、SHA-2家族、SHA-3家族、MD5、SM3等。

2.SHA-1

SHA全称Secure HASH Algorithm,由NIST开发;SHA-1于1995年进行修订发布,要求输入最大长度2^64 -1位数据,输出固定160位消息摘要,处理过程按照512位数据块进行分组。

SHA1的IV设定方法为十六进制数(0-F),每两个数构成一个字节,其中A(32bit数)顺时针0-7,B顺时针8-F,C逆时针F-8,D逆时针7-0,E取C3\D2\E1\F0,因此固定为:

(0x67452301U), (0xEFCDAB89U), (0x98BADCFEU), (0x10325476U),(0xC3D2E1F0U)

不过,在2017年,研究人员成功实施了对SHA-1算法的碰撞攻击,找到了两个不同的消息,但具有相同的SHA-1散列值。这引发了对SHA-1安全性的担忧,因为碰撞攻击可能导致数字签名和其他安全机制的破坏,因此在应用中不建议使用该算法。

3.SHA-2

SHA-2是一系列Hash函数的统称,其中包括SHA-224\256\384\512等,区别主要在于函数内部结果和生成的摘要值长度,SHA-512还有另外变体为SHA512_224、SHA512_256,主要是基于SHA512产生的摘要值进行截断,与SHA512区别在于IV和输出长度不一致。

其中,SHA-224\256分组大小为512位,SHA-384, SHA-512, SHA-512/224和SHA-512/256分组大小为1024bit。

SHA-224生成224位消息摘要,初始IV为:

   (0xC1059ED8U),(0x367CD507U),(0x3070DD17U),(0xF70E5939U),

   (0xFFC00B31U),(0x68581511U),(0x64F98FA7U),(0xBEFA4FA4U)

SHA-256生成256位消息摘要,初始IV(取自然界前8个素数平方根小数部分前32位)为:

    (0x6A09E667U),(0xBB67AE85U),(0x3C6EF372U),(0xA54FF53AU),

(0x510E527FU),(0x9B05688CU),(0x1F83D9ABU),(0x5BE0CD19U)

SHA384生成384位消息摘要,初始IV为:

(0xCBBB9D5DC1059ED8),(0x629A292A367CD507),

(0x9159015A3070DD17), (0x152FECD8F70E5939),

(0x67332667FFC00B31), (0x8EB44A8768581511),

(0xDB0C2E0D64F98FA7), (0x47B5481DBEFA4FA4)

4.小结

这里我们先就将基础的SHA1\2讲解了,接下来我们继续聊SHA-3、SHA2变体SHA512_224\256等。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第326题3的幂

题目: 题解: func isPowerOfThree(n int) bool {return n > 0 && 1162261467%n 0 }

onlyoffice使用Https访问

开发服务器用的是http,一切正常使用,部署到服务器后,由于服务器使用了Https,导致访问onlyoffice时控制台报错。Mixed Content: The page at http://xxxxx// was loaded over HTTPS, but requested an insecure frame http://xxxxx…

Jpa-多表关联-OneToOne

Jpa-多表关联-OneToOne 准备JoinColumnOneToOne属性targetEntitycascade*PERSISTMERGEREMOVEREFRESH orphanRemovalfetchoptionalMappedBy* OneToOne在 hibernate中用于对表与表之间进行维护关联 准备 import com.alibaba.fastjson.JSON; import jakarta.persistence.*; impor…

K210烧录固件失败原因

1.检查固件信息,我这里用的是亚博智能提供的canmv固件 2.检查串口有无被占用,我就是因为打开了另一个正点原子的串口接收软件卡这么久 3.你要烧录canmv固件而非maixypy固件 若烧录maixypy要用maixipy来开发 4。可以看看换不同下载方式

辛迪·克劳馥与“惊艳”家人合影,装扮完美协调 幸福满满

我的意思是——辛迪克劳馥拥有一个令人叹为观止的家庭,这真的有什么好奇怪的吗?毕竟,她是世界知名的超级名模,她把基因和颧骨传给了她的孩子,让他们很容易追随她的脚步。所以,当我们看到她最近的家庭照片时…

面试笔记 8.5

面试常见: Jvm,高并发,多线程,数据库,redis,框架 1.N I/O有什么核心组件 Java NIO 基本原理以及三大核心组件_java nio核心组件有哪些-CSDN博客 Buffer 缓冲 Channel 一对一 Channel 读取数据 Selector对应线程…

【ML】multi head self-attention(自注意力机制)

【ML】multi head 自注意力机制self-attention 0. Transformer1. multi head self-attention2. positional encoding3. transform 可以应用的其他领域3.1 语音识别 变体 truncated self-attention3.2 self-attention for image3.3 self-attention v.s. CNN差异3.4 self-attenti…

CSP 2022 提高级第一轮 - CSP/S 2022初试题 程序阅读第三题解析

一、代码查看 1 #include <iostream> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int MAXL 1000; 7 8 int n, k, ans[MAXL]; 9 10 int main(void) 11 { 12 cin >> n >> k; 13 if (!n) cout << 0 <&l…

IO流学习总结

IO流体系 字节流 字节流&#xff1a; 字节输出流:FileOutputStream 程序---写--->文件 字节输入流:FileInputStream 程序<---读---文件 字节输出流(FileOutputStream) Testpublic void testIO01() throws IOException {/*new FileOutputStream文件不存在创建文件父…

最新CSS3纵向菜单的实现

纵向菜单 通过下面例子&#xff0c;你会知道把列表转换成菜单的关键技术 a中的#是URL的占位符可以点击&#xff0c;真正用途中写实际URL <nav class"list1"><ul><li><a href"#">Alternative</a></li><li><…

AI智能化赋能电商经济,守护消费净土,基于轻量级YOLOv8n开发构建公共生活景下的超大规模500余种商品商标logo智能化检测识别分析系统

在数字经济浪潮的推动下&#xff0c;全力发展新质生产力已成为当今社会发展的主旋律。各行各业正经历着前所未有的变革&#xff0c;其中&#xff0c;电商行业作为互联网经济的重要组成部分&#xff0c;更是以惊人的速度重塑着商业格局与消费模式。AI智能化技术的深度融合&#…

C与Python Socket性能比较

在比较 C 和 Python 的 Socket 性能时&#xff0c;主要考虑以下几个方面&#xff1a; 运行时性能&#xff1a; C 是编译型语言&#xff0c;生成的机器代码运行速度更快&#xff0c;通常能够提供更低的延迟和更高的吞吐量。Python 是解释型语言&#xff0c;运行时有一定的开销&…

分布式时序数据库TimeLyre 9.2发布:原生多模态、高性能计算、极速时序回放分析

在当今数据驱动的世界中&#xff0c;多模态数据已经成为企业的重要资产。随着数据规模和多样性的不断增加&#xff0c;企业不仅需要高效存储和处理这些数据&#xff0c;更需要从中提取有价值的洞察。工业领域在处理海量设备时序数据的同时&#xff0c;还需要联动分析警报信息、…

K8S资源之NameSpace

作用 隔离资源(默认不隔离网络) 查看所有的NS kubectl get ns创建NS kubectl create ns hello删除NS kubectl delete ns hello

GitHub无法识别Markdown的目录

可以直接下载编译好的二进制文件。 二进制文件 下载下来之后&#xff0c;发现没有后缀名无法识别&#xff0c;实际上这是个exe文件&#xff0c;所以只需要暴力地在后面加上.exe就可以开始愉快使用了。 首先将README.md文档复制到gh-md-toc.exe的根目录下。 接着按住shift键…

Java面试题——第三篇(JVM)

1. 什么情况下会发生栈内存溢出 栈是线程私有的&#xff0c;他的生命周期和线程相同&#xff0c;每个方法在执行的时候都会创建一个栈帧&#xff0c;用来存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程&#xff0c;就对应着一个栈帧…

室内浮毛空气净化器除臭吗?好用的室内浮毛空气净化器推荐

家里养了5只猫&#xff0c;满天飞的猫毛发&#xff0c;随风飘到各个角落&#xff0c;可以说苦不堪言。养了毛孩子之后&#xff0c;家里异味&#xff0c;鼻炎过敏&#xff0c;宠物掉毛真的是太闹心了&#xff01;水杯里&#xff0c;床上都是小猫咪跑酷睡觉留下的毛毛&#xff0c…

公网域名流量禁用详解

公网域名流量禁用是一个涉及网络安全和流量管理的复杂操作&#xff0c;它通常需要根据具体的网络环境和业务需求来实施。以下是一些可能的步骤和考虑因素&#xff1a; 一、明确禁用目标 首先&#xff0c;需要明确禁用公网域名流量的具体目标。这可能包括&#xff1a; 阻止未…

Vue Flow: 高效构建可视化工作流的利器

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

DeEcoStudio快捷键设置

例如 打 bgc 快捷键 直接出 .backgroundColor( ) 第一步&#xff1a;点击文件——>设置 第二步&#xff1a;找到编辑器——>实时模板 第三步&#xff1a;点击加号——>点击实时模板 第四步&#xff1a;设置快捷键 第五步&#xff1a;点击变更——>点击全选…