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. MyBatis源码流程分析

    mybatis核心流程三大阶段 Mybatis的初始化  建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提 ...

  2. 【NOIP2013模拟】七夕祭

    题目描述七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和 ...

  3. 微信小程序-组件-基础内容

    1.text 1.作用:类似html的行内元素 2.常用属性: -space值:ensp:中文字符空格一半大小 emsp:中文字符空格大小 nbsp:根据设置字体的大小决定空格大小 -decode:d ...

  4. App网络测试

    弱网测试作为健壮性测试的重要部分,对于移动端测试必不可少. 什么样的网络属于弱网? 小于或等于2G速率的都属于弱网,且随着5G的到来,3G网络速率的降低,未来3G也会逐渐划入弱网的行列. 对于弱网的数 ...

  5. MySQL<=>是什么鬼

    官网描述 NULL-safe equal. This operator performs an equality comparison like the = operator, but returns ...

  6. Docker实战(7):Docker无日志(无*-json.log文件)

    出现这种情况基本都是docker 版本太旧,我的处理方案就是将docker 版本升级到最新,然后重新docker run 一遍就会有了.注意:docker 升级后,原来images,容器会出现一些小问 ...

  7. Linux实战(7):centos7安装xrdp

    系统环境:最小化安装,无安装桌面化 操作 yum更新 yum -y update 安装依赖. tigervnc-server.xrdp .GNOME Desktop yum -y install ep ...

  8. 集群实战(2):K8S集群节点退出加入操作

    以下报错网上其实也可以找到并解决,但是偏零碎我只是根据自己的在使用中遇到的问题做个汇总. 文章目录 首先删掉节点 node重新加入 参考文档 首先删掉节点 注意:以下操作都是在master下操作. 一 ...

  9. spring boot 源码之banner

    Banner 使用Spring Boot启动的jar包总是会显示一个Spring的图标.实际我们是可以自定义这个图标.Banner接口定义了打印banner的方法. void printBanner( ...

  10. zabbbixs数据库常用操作

    设置MariaDB数据库远程 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'admin' WITH GRANT OPTION; SEL ...