【常见开源库的二次开发】基于openssl的加密与解密——单向散列函数(四)

目录:

目录:

一、什么是单项散列函数?

1.1 如何验证文件是否被修改过

 1.2 单项散列函数:

二、单向hash抗碰撞

        2.1 弱抗碰撞(Weak Collision Resistance)

        2.2 强抗碰撞(Strong Collision Resistance)

        2.3 安全性问题

        2.4 当前推荐使用的哈希函数

三、单向hash应用场景

3.1  文件完整性(检查下载的软件是否被篡改):

3.2 口令加密:

3.3 消息认证(确保消息未被篡改):

3.4 伪随机数生成器(PRNG):

3.5 数字签名和非对称加密:

3.6 比特币的工作量证明(Proof of Work, PoW):

 四、常用hash算法

4.1 MD5:

4.2 SHA1:

4.3 SHA2:

4.4 SHA-256:

4.5 SHA3:


一、什么是单项散列函数?

1.1 如何验证文件是否被修改过

文件首次创建或被认为是处于可信状态时,这个已存储的文件在传输文件过程中由于安全性原因可能会中途被攻击者篡改信息,当我们拿到文件后如何知道信息是否被篡改保证信息的安全性呢?

这里我们首先将已存储的文件先做一个已存储文件副本,当我们已存储文件传输到我们这里时,我们想要知道信息是否完整,我们可以通过与之前的已存储文件副本进行比对校验确认完整性

已存储文件在形成已存储文件副本和传输文件时,我们可以认为这个过程的安全性都是相同的,都是有可能篡改的,而且在形成与校验过程中开销相对来说也是比较大的

指纹代替文件比对将已存储文件形成一个指纹文件,指纹文件比较小,对于指纹文件的安全管理相对变得容易,而且开销也相对文件来说会小很对

我们可以用一台可信服务器来放我们的安全属性,这样安全保存的成本更低,获取指纹的开销也比较小。

 

这里指纹需要满足的特点:计算开销小、存储空间开销小、已存储文件改变之后指纹文件跟着改变

 1.2 单项散列函数:

根据指纹所需要满足的特点,解决这样的问题,我们就用到的单项散列函数

单项散列函数也称为哈希函数是一种从输入数据(通常称为“消息”)生成固定大小输出(通常称为“哈希值”或“哈希码”)的算法。单向散列函数的关键特性之一是它们的单向性和抗碰撞性,这意味着从哈希值反推原始数据是非常困难的,并且找到两个不同的输入数据,使其产生相同的哈希值也非常困难。

(1)任意长度数据 => 固定长度散列:无论输入数据的大小或长度如何,哈希函数都会输出一个固定长度的哈希值。这使得哈希函数非常适用于处理大型数据集

(2)减少匹配开销通过比较两个哈希值,而不是两个完整的数据集,可以大大减少匹配开销。这在比如文件完整性检查、数据库索引创建等场景中非常有用。

(3)快速计算:哈希函数通常设计得非常高效,可以快速计算出输入数据的哈希值。

(4)快速验证:由于哈希值的固定大小,验证哈希值比验证原始数据更快更简单。

(5)消息变化=>散列值变化:哈希函数的另一个关键特性是,即使输入数据的微小变化也会导致哈希值的大幅度变化。这就意味着,如果文件或消息被修改,哈希值也会改变,从而可以通过比较哈希值来检测修改。

(6)验证修改:通过对比文件或消息的原始哈希值和新的哈希值,可以验证它们是否被修改过。

(7)单向不可逆:从哈希值无法(或至少在计算上不可行)反推出原始输入数据,这是哈希函数的关键安全特性之一。

(8)抗碰撞:找到两个不同的输入,它们产生相同的哈希值是非常困难的。这称为哈希函数的抗碰撞性。这是哈希函数在众多用途,如密码学、数据完整性校验等方面的关键属性。

二、单向hash抗碰撞

2.1 弱抗碰撞(Weak Collision Resistance)

弱抗碰撞是指对于一个给定的输入 𝑥,很难找到另一个不同的输入 x′,使得 𝑥≠𝑥′ 且 ℎ(𝑥)=ℎ(𝑥′)。换句话说,给定一个特定的哈希值,很难找到另一个不同的输入,使得它们的哈希值相同

2.2 强抗碰撞(Strong Collision Resistance)

强抗碰撞是指很难找到任意两个不同的输入 𝑥和 𝑥′,使得 𝑥≠𝑥′且 ℎ(𝑥)=ℎ(𝑥′)。换句话说,找到任何两个具有相同哈希值的不同输入是非常困难的。

2.3 安全性问题

  • MD5:MD5是一种广泛使用的哈希函数,但由于其设计上的缺陷,已经证明不再具有强抗碰撞性。这意味着可以找到两个不同的输入,它们具有相同的MD5哈希值。因此,MD5不再被推荐用于需要高安全性的应用,如数字签名。

  • SHA-1:SHA-1也是一种曾经广泛使用的哈希函数。然而,由于密码学分析的进展,SHA-1的强抗碰撞性也被攻破。虽然找到实际的碰撞需要大量的计算资源,但这已经表明SHA-1不再安全。因此,SHA-1也不再被推荐用于需要高安全性的应用。

2.4 当前推荐使用的哈希函数

为了确保安全性,推荐使用更现代的哈希函数,如SHA-256、SHA-3等。这些哈希函数目前被认为是安全的,具有良好的抗碰撞性。

三、单向hash应用场景

3.1  文件完整性(检查下载的软件是否被篡改):

通过比如 MD5, SHA1 或 SHA256 等散列算法来验证文件的完整性。下载文件时通常会提供一个哈希值,用户可以通过计算下载文件的哈希值并与提供的哈希值进行比较来确保文件未被篡改

3.2 口令加密:

口令应通过哈希函数进行存储,而非明文。为增加安全性,常与加盐技术(salt)结合使用,这样即使两个相同的密码,由于加盐不同,其最终的哈希值也会不同。常用的哈希算法包括 bcrypt, PBKDF2 或 Argon2。

3.3 消息认证(确保消息未被篡改):

HMAC(Hash-based Message Authentication Code)是一种基于密钥的哈希算法,用于验证消息的完整性和真实性。它结合了哈希函数和一个密钥,只有知道密钥的人才能验证哈希值,从而确保消息的安全。

3.4 伪随机数生成器(PRNG):

在密码学中,高质量的伪随机数对于生成安全的密钥和密码非常重要。PRNG应具备高熵(随机性)以确保产生的数值不可预测。

3.5 数字签名和非对称加密:

通过使用非对称加密技术,可以生成数字签名来验证一个消息或文件的真实性和完整性。发送者使用私钥签名,接收者则可以用相应的公钥来验证签名。

3.6 比特币的工作量证明(Proof of Work, PoW):

这是一种共识机制,用于在没有中央权威的情况下达成网络共识。它要求参与者解决一个计算密集型的问题,解决问题的过程需要大量的计算资源,这样可以防止恶意攻击和垃圾交易。

 四、常用hash算法

4.1 MD5

MD5(Message-Digest Algorithm 5)已经不再被视为安全的哈希函数,因为它的碰撞抵抗性较弱,即存在两个不同的输入可能产生相同的输出的情况。然而,它仍然广泛用于非加密目的的数据完整性检查。

4.2 SHA1

安全哈希算法1(SHA-1)比MD5更安全,但是同样因为碰撞抵抗性较弱而不再建议用于密码学哈希。

4.3 SHA2

SHA-2是一组哈希函数,包括SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256等。SHA-256、SHA-384和SHA-512分别输出256位、384位和512位长的哈希值,被广泛应用在安全协议和系统中。

4.4 SHA-256

SHA-256是应用最广泛的SHA-2函数,比特币的工作量证明(PoW)就是采用的SHA-256哈希函数。

4.5 SHA3

SHA-3(Keccak)是SHA-2的后续版本,采用全新的设计。Keccak256(256位长的SHA-3版本)用于以太坊中生成地址和交易哈希

4.6 国密SM3

SM3是中国国家密码管理局推出的密码哈希函数标准,输出256位长的哈希值,主要应用在中国的安全系统和产品中。

尽管哈希函数的输出看起来是随机的,但它们都是确定性的:同一输入总是产生相同的输出。而安全的哈希函数还应具有以下性质:碰撞抵抗(难以找到两个不同输入产生相同输出)、预图像抵抗(给定哈希值难以找到对应的输入)和次预图像抵抗(给定输入难以找到另一输入产生相同的输出)。

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

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

相关文章

[GXYCTF2019]Ping Ping Ping1

打开靶机 结合题目名称,考虑是命令注入,试试ls 结果应该就在flag.php。尝试构造命令注入载荷。 cat flag.php 可以看到过滤了空格,用 $IFS$1替换空格 还过滤了flag,我们用字符拼接的方式看能否绕过,ag;cat$IFS$1fla$a.php。注意这里用分号间隔…

【光伏发电功率预测】方法综述学习笔记2《光伏发电功率超短期预测方法综述》

本文参考《光伏发电功率超短期预测方法综述》:https://d.wanfangdata.com.cn/periodical/ChlQZXJpb2RpY2FsQ0hJTmV3UzIwMjQwNzA0Eg5nZHlqczIwMjMwNzAyNBoIeHp4NW40YmU%3D 文章目录 摘要:引言1. 光伏发电功率的影响因素分析1.1传递过程中的影响因素1.1.1…

DDei在线设计器-数据格式说明

数据格式说明 DDei的所有设计数据都以文件为单位保存在一个JSON对象中。JSON对象包含了全量的页签、舞台、图层、控件的位置以及属性信息。开发人员可以存储这个JSON到服务端数据库中,从而轻易的实现保存功能;也解析这个JSON,将其转换成自己业…

对红酒品质进行数据分析(python)

http://t.csdnimg.cn/UWg2S 数据来源于这篇博客,直接下载好csv文件。 这篇内容均在VScode的jupyter notebook上完成,操作可以看我的另一篇博客:http://t.csdnimg.cn/69sDJ 一、准备工作 1. 导入数据库 #功能是可以内嵌绘图,并…

用了6年git,不知道cherry-pick是啥意思

背景 可能是测试开发角色原因,平时很少有代码冲突或多人协同的编码场景。今天有个协同项目,需要提交自己的代码到其它业务的代码库中,这个代码库是分支开发分支上线模式,同时会有多个同事提交代码,然后模块负责的同学…

常用优秀内网穿透工具(实测详细版)

文章目录 1、前言2、安装Nginx3、配置Nginx4、启动Nginx服务4.1、配置登录页面 5、内网穿透5.1、cpolar5.1.1、cpolar软件安装5.1.2、cpolar穿透 5.2、Ngrok5.2.1、Ngrok安装5.2.2、随机域名5.2.3、固定域名5.2.4、前后端服务端口 5.3、NatApp5.4、Frp5.4.1、下载Frp5.4.2、暴露…

【数学建模】——【线性规划】及其在资源优化中的应用

目录 线性规划问题的两类主要应用: 线性规划的数学模型的三要素: 线性规划的一般步骤: 例1: 人数选择 例2 :任务分配问题 例3: 饮食问题 线性规划模型 线性规划的模型一般可表示为 线性规划的模型标准型&…

vue2.0结合使用 el-scrollbar 和 v-for实现一个横向滚动的元素列表,并且能够自动滚动到指定元素(开箱即用)

效果图&#xff1a; 代码&#xff1a; <div class"gas-mode-item-body"><el-scrollbar style"width: 300px;height: 100%;" wrap-style"overflow-y:hidden" ref"scrollbarRef"><div style"display: flex&quo…

Python Linux环境(Centos8)安装minicoda3+jupyterlab

文章目录 安装miniconda安装python环境启动 最近服务器检查&#xff0c;我下面的服务器有漏洞&#xff0c;不得已重装了&#xff0c;正好记录下怎么从零到python写代码。 安装miniconda miniconda是anconda的精简版&#xff0c;就是管理python环境的得力助手。 # 创建一个名…

7.18 学习笔记 解决分页越界问题 及分页查询

1.解决分页越界 1.1出现的问题 于是我索性把分页去掉想是不是就可以了&#xff0c;结果发现还不行 1.2解决方法 就当我找了一两个小时抓耳挠腮时&#xff0c;万幸在csdn上找到了相关的帖子&#xff0c;在此感谢一下那位大佬。 原因是我的实体类中没有构造方法&#xff0c;那…

软考系规百天备考攻略:基础阶段的三轮强化

早在今年4-5月份的时候&#xff0c;我就曾经讲过系统规划与管理师的备考建议&#xff0c;也就是先从教程学起&#xff0c;先读教程&#xff0c;而且我也说过&#xff0c;不要迷信任何培训班或者培训视频&#xff0c;任何培训班或者培训视频都不能取代你认真读至少一遍教程&…

BIOMOD2 物种分布模拟教程

原文链接&#xff1a;BIOMOD2 物种分布模拟教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247609373&idx5&sn492e7597314a5f9e358c35e4780b275f&chksmfa826dfacdf5e4ecf8ac06bdeba5469b31650bdbefbc8fb88b79c0f332714c453a4cc058d29f&token155…

Calibration相机内参数标定

1.环境依赖 本算法采用张正友相机标定法进行实现&#xff0c;内部对其进行了封装。 环境依赖为 ubuntu20.04 opencv4.2.0 yaml-cpp yaml-cpp安装方式&#xff1a; &#xff08;1&#xff09;git clone https://github.com/jbeder/yaml-cpp.git #将yaml-cpp下载至本地 &a…

15- 微分方程

对三角函数不敏感

模块化沙箱:解锁数据防泄密的终极密码

在这个数字化时代&#xff0c;数据已经成为企业最宝贵的资产之一。然而&#xff0c;数据泄露的威胁如同暗夜中的幽灵&#xff0c;随时可能侵袭企业的信息安全防线。面对日益复杂的内外部风险&#xff0c;企业亟需一种既高效又灵活的安全解决方案&#xff0c;来保护其核心数据不…

专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!

软件介绍 Adobe Acrobat Pro DC 2024绿色便携版是一款功能强大的PDF编辑和转换软件&#xff0c;由Adobe公司推出。它是Acrobat XI系列的后续产品&#xff0c;提供了全新的用户界面和增强功能。用户可以借助这款软件将纸质文件转换为可编辑的电子文件&#xff0c;便于传输、签署…

透视矫正插值

https://www.cnblogs.com/straywriter/articles/15889273.html https://www.comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf https://8.136.115.103/perspective-correct-interpolation%E9%80%8F%E8%A7%86%E6%A0%A1%E6%AD%A3%E6%8F%92%E5%80%BC/ 透视矫正…

Postfix+Dovecot+Roundcube开源邮件系统搭建系列4:Dovecot安装配置

1. Dovecot安装 安装Dovecot&#xff1a; yum -y install dovecot dovecot-mysql 启动服务并设置开机自启动&#xff1a; systemctl start dovecot systemctl enable dovecot 2. Dovecot配置 Dovecot配置文件目录&#xff1a;/etc/dovecot&#xff0c;在该目录中dovecot.…

【内网穿透】如何本地搭建Whisper语音识别模型并配置公网地址

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

视频联网共享平台LntonCVS视频监控汇聚平台视频云解决方案

LntonCVS流媒体平台是一款遵循国家GB28181标准协议的先进视频监控与云服务平台。该平台设计独特&#xff0c;能够同时接入并处理多路设备的视频流&#xff0c;支持包括RTSP、RTMP、FLV、HLS、WebRTC在内的多种视频流格式的分发。其功能丰富多样&#xff0c;涵盖了视频直播监控、…