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

打印 上一主题 下一主题

主题 651|帖子 651|积分 1953


目次:

   目次:
  一、什么是单项散列函数?
  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
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表