首页 » 网站推广 » aspnetphphashhmac技巧_OK思享汇区块链技能里的密码学哈希函数

aspnetphphashhmac技巧_OK思享汇区块链技能里的密码学哈希函数

访客 2024-11-13 0

扫一扫用手机浏览

文章目录 [+]

哈希函数还可以用在数据完全性的检测当中,例如说我们常常会看到网站高下载软件时会在阁下给出hash值,这个hash值便是用来判断文件是否完全,是否不才载时被别人修改了。
我们从网站高下载了一个文件,我们怎么判断我们下载的文件是完全的呢?我们可以将文件经由hash函数之后得到的值与网站上的进行比拟,看是否相同,相同则代表文件网站,不相同则代表不网站或者被修改。

Hash函数还可以用于可证明安全密码系统编制当中,这个之后我们会讲到。
其次hsah函数还可以检测传输中是否被修改,防止假造电子署名和认证码,作为安全组件设计多种密码系统编制和安全通信协议,比特币和区块链的核心技能。

aspnetphphashhmac技巧_OK思享汇区块链技能里的密码学哈希函数

Hash函数又称杂凑函数、散列函数、数字指纹等,将任意长的压缩为一个固定长度的择要。
如下图,我们可以看到hash函数可以将任意大小的文件压缩成n比特的一个01串,n可以是128、160、192、256、384或512。

aspnetphphashhmac技巧_OK思享汇区块链技能里的密码学哈希函数
(图片来自网络侵删)

我们可以看到hash函数的数学表达式是Y=H(M) , {0,1}{0,1}n,H代表一个hash函数,M代表一个输入信息,Y是一个输出,可以看到,hash函数的输入可以是任意位数的,但是输出是定长位数的,为n。
打算机中利用的hash表紧张用于存储和查找,是源于1953年IBM的历史性谈论所得到的。

密码学中的hash函数与打算机中利用的hash函数略有不同,密码学中利用的hash函数具有特定的安全属性。
之后我们会详细先容它的安全属性。

我们之前先容的hash函数是不带密钥的,直接对进行压缩。
我们可以在hash函数中引入密钥,使它变成可以进行身份验证的MAC算法。
我们可以看到下图的表示,是把密钥和同时作为hash函数的输入。
MAC函数具有完全性检测和通信双方的身份认证功能。
¬¬hash函数广泛运用于各种Internet协议,如IPsec、SSL/TLS、SSH、SNMP等,还有金融安全:银行,电子泉币等。

再来说一下hash函数的5大安全特性。
首先,hash函数具有抗原像攻击的安全属性。
抗原像攻击是指给定任意Hash值Y,规复M 是困难的。
抗第二原像攻击和抗碰撞性是相似的,抗第二原像攻击指的是对付给定的M1 ,打算另一个M2 使H(M1)=H(M2)是困难的。

而抗碰撞性则是指找到不同的(M1, M2) 有相同的指纹,即H(M1)=H(M2)是困难的。
这两个安全属性的不同点在于一个是给定M1,一个是M1可以自己选择。

抗长度扩展攻击指的是给定M的长度和H(M),不知道M的情形下,打算H(M||M’)是困难的。
抗二次碰撞攻击:给定一对碰撞M和M’,对付任意N,M||N和M’||N也形成碰撞。

Hash函数紧张有6种,分别是MD5,SHA-1,SHA-2,SHA-3,Whirlpool,SHA-3,SM3。
MD5已经是很传统的hash函数了,是在1992年由Rivest设计提出的,输出长度为128比特。
Rivest也是公钥加密算法RSA的设计者之一,是个中的R,Rivest在2002年的时候得到了图灵奖。

我的导师王小云教授在Crypto 2004上提出一种能成功攻破MD5的算法。
SHA-1是1995年由NIST(美国国家标准与技能研究院)提出,输出长度160比特。
SHA-2是2002年由NIST提出,输出长度256,384,512比特。
Whirlpool是2000年由Rijmen等设计,输出长度512比特。
KECCAK在SHA-3标准竞赛中胜出,成为SHA-3标准算法,是2007年由Daemen等设计,输出长度256,384,512比特。
Hash函数也有由中国人自己设计实现的算法,SM3,是在2010年由我的导师王小云院士等设计,输出长度256比特。

其次王老师还攻破过SHA-1,SHA-2。
王老师最推举看的一本密码学入门书本是《码书》。
我是通过看《欺骗的艺术》说到MD5时有标注,MD5已被中国科学家王小云破解理解到王老师的,之后对王老师十分敬佩,并且成为她的研究生。

Hash可以运用在上岸认证中。
用户供应用户名和密码,做事器在数据库中查找用户名,获取salt值,打算Hash(salt+password)与数据库中比对,相同则通过认证。
这样可以防止密码直接存在数据库中,黑客/管理员可以直接查看到用户密码。
加salt的目的是防止两个用户密码相同在做事器中可以直接查看到。

Hash可以用在密钥衍生中。
我们可以看到银行利用的U盾所产生的随机数便是通过hash函数产生的。
其次hash函数也广泛运用于RFID、卫星通讯等密码系统中。

hash函数也在数字署名中有运用。
如果学习完下一节的知识之后,我们就会知道,数字署名利用的是椭圆曲线署名,在打算上十分慢,要签的数据量越大署名速率就会越慢,以是一样平常采取的办法是,在署名前先将要署名的信息进行Hash压缩,得到一个很短的比特串,之后再进行署名运算。
我们看下图是一个金融安全的模型。

hash函数还在比特币以及区块链中有很好的运用。
比特币挖矿,实在便是在找一个随机数n,使得n拼接上交易信息的hash值前m位为零。
前m位为零,代表的是挖矿的打算繁芜度,假设要探求前60比特为0的hash值,那么他的打算繁芜度便是260次运算。
电子货币:一种代替货币的电子署名,通过用户的公钥(数字证书)可验证货币的合法性。

来源:OK区块链工程院

标签:

相关文章

Python编程从入门到精通,探索编程之美

编程已经成为现代社会的一项基本技能。Python作为一种简单易学、功能强大的编程语言,在我国教育领域备受关注。本文将从Python...

网站推广 2025-03-02 阅读1 评论0

Scum07代码编程之美与适用方法

编程已成为当今社会不可或缺的技能之一。Scum07代码作为一款经典的编程语言,在我国众多程序员中备受推崇。本文将深入解析Scum0...

网站推广 2025-03-02 阅读1 评论0

Linux环境下的前端代码运行优化与步骤

前端技术逐渐成为软件开发的核心。Linux操作系统因其稳定性、安全性、开放性等特点,成为众多开发者和企业青睐的运行环境。本文将从L...

网站推广 2025-03-02 阅读1 评论0