HASH函数的特点及其应用

2023-11-07

    HASH函数必须具备两个基本特征:单向性 和 碰撞约束。单向性是指其的操作方向的不可逆性,在HASH函数中是指 只能从输入推导出输出,而不能从输出计算出输入;碰撞约束是指 不能找到一个输入使其输出结果等于一个已知的输出结果 或者 不能同时找到两个不同的输入使其输出结果完全一致。一个函数只用同时严格的具备了这样的特性,我们才能认可这样的一个HASH。
    目前常用的HASH函数主要有两个系列,MD 和 SHA系列。MD系列主要包括 MD2,MD4,MD5,不幸的是这一系列的hash函数都已经被证实是不够安全的了,我国山东大学教授王小云就是因为在有限的时间内成功地破解了MD2和MD5算法而扬名海内外。SHA系列正是因此而生,其包含SHA1 和 SHA2(SHA224, SAH256, SHA384,SHA512)系列。其中224,256,384,512都是指其输出的位长度,而SHA1是160位长(注意我们应该避免使用SHA0,那是SHA的初始版本,后来经过调整,升级为SHA0,我们在使用的时候应该使用SHA1).
    经过长时间的测试和软硬件的不断提升,SHA1已经不再被当成是能经得住考验的选择了。目前大多数应用场景下,推荐使用SHA256以上的算法。在概率方面有生日悖论的存在,经此推导,每种HASH算法的实际位强度只有其结果强度的一般,即如果是SHA256,实际攻击强度只有2的128次方。
    对于HASH函数的使用,有很多误区,在此特列举其使用场景以及常见的使用误区。但是不论如何,我们都该记得HASH函数的特点:固定长度的输出,单向不可逆,碰撞约束。
    正确的应用场景:
    1,数据校验
    HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。
    2,单向性的运用
    利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果。这一点相信在银行等系统中有所运用,否则我们真的要睡不着觉了:)
    3,碰撞约束以及有限固定摘要长度
    数字签名正是运用了这些特点来提高效率的。我们知道非对称加密算法速度较低,通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。
    4,可以运用HASH到随机数的生成和密码,salt值等的衍生中
    因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中(从一个随机的种子数产生,并且不暴露种子本身秘密)。
    常见的误区:
    1,误认为其是加密算法
    有很多人把HASH算法当成是加密算法,这是不准确的,其实我们知道加密总是相对于解密而言的,没有解密何谈加密呢,HASH的设计以无法解为目的的。
    2,不包含salt的口令HASH
    注意如果我们不附加一个随机的salt值,HASH口令是很容易被字典攻击入侵的。
    3,不注意中间人攻击
    注意HASH并不能保证网络的安全,要防止攻击者同时替换数据和HASH。正确运用中要结合加密,签名。

    没有永远的安全HASH,只有永远的HASH思想......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HASH函数的特点及其应用 的相关文章

随机推荐

  • CUDA Samples: heat conduction(模拟热传导)

    以下CUDA sample是分别用C 和CUDA实现的模拟热传导生成的图像 并对其中使用到的CUDA函数进行了解说 code参考了 GPU高性能编程CUDA实战 一书的第七章 各个文件内容如下 funset cpp include funs
  • 【计算机视觉

    文章目录 一 分割 语义相关 12篇 1 1 MeViS A Large scale Benchmark for Video Segmentation with Motion Expressions 1 2 Likelihood Based
  • SCAU-OJ教材习题

    第三章 1 分期还款 加强版 从银行贷款金额为d 准备每月还款额为p 月利率为r 请编写程序输入这三个数值 计算并输出多少个月能够还清贷款 输出时保留1位小数 如果无法还清 请输出 God 计算公式如下 输入格式 三个数 分别为货款金额 每
  • 史上最全的Websocket入门教程

    websocket简介 websocket是什么 答 它是一种网络通信协议 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 为什么需要websocket 疑问 我们已经有了 HTTP 协议 为什么还需要另一个协议
  • 【力扣】96. 不同的二叉搜索树 <动态规划>

    力扣 96 不同的二叉搜索树 给你一个整数 n 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种 返回满足题意的二叉搜索树的种数 示例 1 输入 n 3 输出 5 示例 2 输入 n 1 输出 1 提示 1 l
  • Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!

    1 Lombok 使用演示 Lombok 使 同时使 Data 和 Builder 构建无参构造器报错 编译不通过 如下图 Lombok 使 Data 可以自动 成 参构造和类 所有属性的 getter setter 法 可以简化我们代码的
  • 【Matlab显示空间不足 help memory——已解决 + Matlab上保存的数据太大,导致保存的数据显示只有1KB——已解决】

    Matlab显示空间不足 help memory 已解决 Matlab上保存的数据太大 导致保存的数据显示只有1KB 已解决 问题描述 问题一 方案一 问题一 方案二 问题二 方案 问题描述 1 当处理一些matlab矩阵数据时会出现一些错
  • Flutter LayoutBuilder组件

    文章目录 Flutter LayoutBuilder组件 简书 使用 Flutter LayoutBuilder组件 简书 可以借助LayoutBuilder组件根据不同的屏幕尺寸显示不同的效果 如竖屏和横屏显示的样式不一样 屏幕尺寸介绍
  • 数据分析之非参数检验与二元逻辑回归结果不一致的原因

    在对两组数据进行非参数检验时 各项属性间无统计学差异 但以分类变量作为因变量使用二元逻辑回归进行分析时 其中存在属性p值小于0 05 即该变量对因变量的影响具有显著性 导致该情况的原因 可能是由于两个检验方法所用的假设和检验策略不同所致 非
  • 菜鸟电子面单打印

    一 首先开通电子面单服务 然后自己编辑一个模板 地址 https cloudprint cainiao com print 提示 这里不再详细说明 网上随便找了一个模板地址 如果不会 下面我会提供一个 没有关系 二 需要一台打印机 我的打印
  • 使用 Python 的ChatGPT API 的简单指南

    OpenAI 刚刚发布了 ChatGPT API 这是一个调用 GPT 3 5 Turbo 的 API 与 ChatGPT 产品中使用的模型相同 对于那些已经熟悉 Python 中的 OpenAI API 的人来说 学习如何使用 ChatG
  • Git安装和配置

    Git Gitee 官网安装配置教程 https gitee com help articles 4104 本文是以官网教程为基础而展开的实践笔记 初学者可以以本文为引入 但建议最终以官方文档为最终深入学习的参考 一 下载和安装Git 1
  • 关于scsi锁的故事

    最后更新2021 11 01 一不小心 已经11月了 冬天围着火锅烤串喝啤酒的好日子 scsi锁的出发点很正确 谁用谁锁 用后开锁 目的是避免并行访问的时候有其它不知情的访问变更了数据 更狠毒的是变更了meta数据 整体存储数据结构就乱掉了
  • 微信小程序卖货收费吗?企业公司商家要知道的

    有些小伙伴想做一个微信小程序卖货 就会咨询相关问题 例如微信小程序卖货收费吗 那么下面就和大家探探下这个问题 答案是 收费的 微信小程序卖货收费主要大致有三个地方 一 认证费用 在申请微信小程序账号的时候 要给小程序账号做认证 费用是300
  • 《TensorFlow深度学习》笔记

    import tensorflow as tf from tensorflow import keras from tensorflow keras import datasets import numpy as np import mat
  • phpstudy的mysql服务启动又停止

    前面装了一个MySQL 试了看到的各种方法都不行 试了一下phpmyadmin phpmyadmin通过点击上面的数据库工具打开 发现可以了
  • mongodb常用操作

    只显示某一字段 db extra third 2 2 find name 1 删除字段 db extra third 2 2 remove name null 导出某一个collection usr local app mongodb bi
  • linux永久自动挂载

    给sdb先分两个区 fdisk dev sdb vi etc fstab 永久挂载文件 第1列 挂载设备 想挂谁就写谁 第2列 挂载点 boot 想要永久挂载到根下d1或d2 在这里就写根下d1或d2 第3列 文件系统类型 xfs 格式化成
  • Vue3实现将页面转成PDF并下载或直接打印

    步骤一 安装依赖包 npm i html2canvas npm i jspdf 步骤二 在utils文件夹下新建htmlToPdf js文件 页面导出为pdf格式 import html2Canvas from html2canvas im
  • HASH函数的特点及其应用

    HASH函数必须具备两个基本特征 单向性 和 碰撞约束 单向性是指其的操作方向的不可逆性 在HASH函数中是指 只能从输入推导出输出 而不能从输出计算出输入 碰撞约束是指 不能找到一个输入使其输出结果等于一个已知的输出结果 或者 不能同时找