博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
哈希函数密码学
阅读量:6687 次
发布时间:2019-06-25

本文共 971 字,大约阅读时间需要 3 分钟。

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!!

哈希函数是密码学中的一个重要分支,该函数是一类数学函数,它可以在有限的合理时间内,将任意长度的消息变换成固定长度的二进制串,且不可逆,这个输出值就是哈希值,也叫散列值或消息摘要。以hash函数为基础的hash算法,在数字签名,实现数据完整性,merkle树数据存储和检索等方面有着广泛的应用。

在比特币系统中使用了两个密码学hash函数,一个是SHA256,另一个是ripemd160。ripemd160主要用于生成比特币地址,SHA256是比特币链上几乎所有加密算法的hash函数。

  1. 技术原理

hash函数也叫散列函数,杂凑函数。它是一种单向密码机制,也就是只能加密,而不能解密。数学表达式可以为:h=H(m),其中H是哈希函数,m是要加密的信息,h是输出的固定长度的哈希值。运算过程是设定一个初始向量,对消息补长到算法要求长度,将补长后的消息拆分成N份数据块,N份数据块与初始向量通过hash算法进行迭代循环运算,最终得到固定长度的hash值。

hash函数具有以下特点:

压缩性:对任意长度的信息加密成固定长度的hash值;

单向性:hash函数的数学原理没有逆运算,所以不能将hash值转换成加密前的信息;
抗碰撞性:hash函数的运算过程相当复杂,包含多种数学运算和大量变量循环运算,要满足两个不同的消息产生相同的hash值几乎不可能发生;
高灵敏性:任何微小的输入都有可能对输出产生巨大的影响。
典型的hash函数有两类:消息摘要算法(MD5)和安全散列算法(SHA)。

  1. hash碰撞

理想的hash函数对于不同的输入得到两个不同的hash值。在实际中,如果存在两个不同的信息m,m'使H(m)=H(m'),那么就称m和m'是该函数的一个碰撞。简言之,hash碰撞是指两个不同的消息在同一个哈希函数作用下,产生两个相同的哈希值。

为了保证数据安全性和不可篡改性,实际hash算法要足够复杂使其有很强的hash抗碰撞性。
hash抗碰撞性分为两种:一种是弱抗碰撞性,即指定的消息x和函数H,去求消息y,使H(x)=H(y)在计算上是不可行的;另一个是强抗碰撞性,即给定函数H,对于任意一对不同的消息x和y,使得H(x)=H(y)在计算上也是不可行的。

转载地址:http://nyeao.baihongyu.com/

你可能感兴趣的文章
TURBOGATE邮件网关——最经济高效的企业网关选择
查看>>
MS14-058 最新提权神器
查看>>
数据挖掘算法(Analysis Services – 数据挖掘)
查看>>
Apache配置详解(最好的APACHE配置教程)
查看>>
CentOS 7 下基于基 bitnami 安装部署 redmine
查看>>
linux ubuntu apt-get 更换源
查看>>
【Web探索之旅】第二部分第三课:框架和内容管理系统
查看>>
Javascript中公有成员,私有成员,静态成员
查看>>
DB2-内存的使用
查看>>
第四、五章解决队列和串的编程问题
查看>>
包失效,无法编译
查看>>
linux 配置全用户的环境变量,profile.d文件的作用
查看>>
linux邮件服务器配置
查看>>
HTML5学习笔记(二)——表单1
查看>>
docker笔记
查看>>
三层交换机与路由器的相关配置
查看>>
html表单笔记
查看>>
nginx负载均衡的5种策略
查看>>
MyBatis学习总结(三)——优化MyBatis配置文件中的配置
查看>>
《Java程序员的基本修养》读书笔记之内存回收
查看>>