Hash算法性质

Hash算法用于计算消息摘要(Message Digest),可以将任意长的输入信息快速地转换为固定长度的输出。在区块链中主要利用了Hash算法的三种性质:

  • 抗冲突性(Collision Resistance):不同的输入经过Hash运算之后很难产生相同的输出,哪怕输入之间只有微小的差别也会对输出造成很大的影响(雪崩效应)。
  • 信息隐藏(Hiding):是指很难通过输出的内容联想到输入的内容。
  • 谜题友好(Puzzle Friendly):知道了输出想反向计算出原始的输入内容几乎是不可能做到的,需要耗费巨量的计算。

应用场景举例

  • 文件校验

    p2p软件在下载完成之后,为了防止下载的文件被篡改或者损坏,会对文件用MD5哈希算法进行校验,计算结果和预先得知的哈希值一致才认为下载成功。
  • 数字签名

    将要传递的信息经过Hash运算之后生成消息摘要(Message Digest),再用自己的私钥对消息摘要进行加密作为附带的签名一起传输给对方。这样一来能实现1.防止信息被截获篡改;2.证明信息确实是来自于哪个人。

常见Hash算法种类

  • MD5

    MD5(Message Digest 5)是一种被广泛使用的Hash函数,可以生成128位(16字节)的Hash值,用于确保信息传输完整性。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。MD5比MD4更加安全,但过程更加复杂,计算速度要慢一点。MD5已于2004年被成功碰撞,其安全性已不足应用于商业场景。
  • SHA1

    SHA(Secure Hash Algorithm)家族中第一代哈希算法,SHA1在许多安全协议中广为使用,包括TLS和SSL。2017年2月,Google宣布已攻破了SHA1,并准备在其Chrome浏览器产品中逐渐降低SHA1证书的安全指数,逐步停止对使用SHA1哈希算法证书的支持。
  • SHA2

    SHA(Secure Hash Algorithm)家族中第二代哈希算法,这是SHA算法家族的第二代,支持了更长的摘要信息输出,主要有SHA224、SHA256、SHA384和SHA512,数字后缀表示它们生成的哈希摘要结果长度。
  • SHA3

    SHA(Secure Hash Algorithm)家族中第三代哈希算法,之前名为Keccak256算法(读作“ketchak”,被采纳为标准之后改叫SHA3,但在最终SHA3标准改了keccak256中的填充算法,所以两者实际计算的结果是不同的),SHA3并不是要取代SHA2,因为目前SHA2并没有出现明显的弱点,由于对MD5、SHA0和SHA1出现成功的破解,NIST感觉需要一个与之前算法不同的,可替换的加密Hash算法,也就是现在的SHA3。
  • RIPEMD-160

    RIPEMD-160(RACE Integrity Primitives Evaluation Message Digest-160)是一个160位加密哈希函数。它旨在替代128位哈希函数MD4、MD5和RIPEMD-128。
  • SM3

    SM3(Shang Mi 3)是国家密码局指定的国密版本的哈希算法,此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的哈希值。

Hash算法简介的更多相关文章

  1. 一致性hash算法简介与代码实现

    一.简介: 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1.平衡性(Balance) 2.单调性(Monotonicity) 3.分散性(Spread) 4.负 ...

  2. 一致性hash算法简介

    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简单哈希 ...

  3. 分布式缓存技术memcached学习(四)—— 一致性hash算法原理

    分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...

  4. 分布式缓存技术memcached学习系列(四)—— 一致性hash算法原理

    分布式一致性hash算法简介 当你看到"分布式一致性hash算法"这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前, ...

  5. 【整理】hash算法原理及常见函数

    简介 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.        散列表 ...

  6. 【数据结构与算法】一致性Hash算法及Java实践

    追求极致才能突破极限 一.案例背景 1.1 系统简介 首先看一下系统架构,方便解释: 页面给用户展示的功能就是,可以查看任何一台机器的某些属性(以下简称系统信息). 消息流程是,页面发起请求查看指定机 ...

  7. hash算法与hashmap

    参考博客: http://zha-zi.iteye.com/blog/1124484 http://www.cnblogs.com/dolphin0520/p/3681042.html(参考了hash ...

  8. 浅析nodeJS中的Crypto模块,包括hash算法,HMAC算法,加密算法知识,SSL协议

    node.js的crypto在0.8版本,这个模块的主要功能是加密解密. node利用 OpenSSL库(https://www.openssl.org/source/)来实现它的加密技术, 这是因为 ...

  9. FNV hash算法

    原文:https://blog.csdn.net/u013137970/article/details/79020095 FNV算法简介FNV算法属于非密码学哈希函数,它最初由Glenn Fowler ...

随机推荐

  1. latex pdf 转 eps

    latex pdf 转 eps 方法一,使用命令行,缺点是得到的文件有点大 pdf 转 ps, pdf2ps input.pdf output.ps ps 转 eps, ps2eps input.ps ...

  2. PHP之道(PHP The Right Way)

    原文地址:http://laravel-china.github.io/php-the-right-way/

  3. python程序控制--分支结构

    单分支结构 单分支结构猜数字 二分支结构 多分支结构   注意多条件之间的包含关系 注意变量取值范围的覆盖 条件判断及组合 程序的异常处理 输入一个整数,进行乘方操作, 但是,如果用户没有输入整数的时 ...

  4. Docker:三、深入Docker容器&Asp.net发版

    各位看官,我们前面已经有过两篇文章的研究了,哈哈,都是皮毛... 今天我们来看看docker容器内部,一探究竟... 一.进入docker容器 进入Linux容器非常简单,直接使用如下命令即可: do ...

  5. 关于KeePass基于csv格式的批量导入与导出

    在KeePass的导出选项中,有一个KeePass CSV(1.x),导出后格式如下: "Account","Login Name","Passwor ...

  6. dubbo学习(四)配置dubbo 注解方式配置

    provider(生产者) service注解暴露服务 /** * 用户管理实现类 */ @Service //用的dubbo的注解,表明这是一个分布式服务 @Component //注册为sprin ...

  7. 刷题[MRCTF2020]Ezpop

    解题思路 打开一看直接是代码审计的题,就嗯审.最近可能都在搞反序列化,先把反序列化的题刷烂,理解理解 代码审计 Welcome to index.php <?php //flag is in f ...

  8. 理解 JAVABEAN EJB POJO

    <Spring实战>第一章:基本理念.各类名称熟语 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混 ...

  9. centos 端口测试之nc使用

    服务器端口测试是否正常,运维一般使用telnet来检查,但它有局限性,服务器的端口必须存在服务运行. 这时使用nc可以在服务端模拟开启一个端口,再通过nc测试此端口,好用! nc是netcat工具的简 ...

  10. Mysql探索之Explain执行计划详解

    前言 如何写出效率高的SQL语句,提到这必然离不开Explain执行计划的分析,至于什么是执行计划,如何写出高效率的SQL,本篇文章将会一一介绍. 执行计划 执行计划是数据库根据 SQL 语句和相关表 ...