火星链 火星链
Ctrl+D收藏火星链
首页 > LTC > 正文

HARE:SHA-256、MD-5…… 哈希散列函数这些原理你懂了吗?

作者:

时间:1900/1/1 0:00:00

作者:wagslane

译者:火火酱

出品:区块链大本营

本文对哈希函数进行简要的介绍,旨在帮助读者理解为什么要使用哈希函数,以及其基本工作原理。文中将省略具体证明和实现细节,而将重点放在高级原理上。

为什么要使用哈希函数

哈希函数被广泛应用于互联网的各个方面,主要用于安全存储密码、查找备份记录、快速存储和检索数据等等。例如,Qvault使用哈希散列将主密码扩展为私人加密密钥。

用途列表清单详见:?https://en.wikipedia.or/wiki/Hash_function#Uses

本文将重点介绍哈希函数的几个重要特性,也可以说是其最重要的特性:

哈希函数确定性地加扰数据;

无论输入是什么,哈希函数的输出大小始终相同;

无法从加扰的数据中检索原始数据;

SharkTeam:Hotbit News疑进行Rug Pull,获利约170万美元:金色财经报道,根据SharkTeam链上分析平台ChainAegis的安全监测显示,Hotbit_news疑似进行了一次大规模的Rug Pull行为,从用户那里抽走了大约170万美元的资产。其中一位受害者是RichQuack,他损失了大约25.4万美元的QUACK和USDT。BabyDogeCoin和DogelonMars也是这起案件的受害者,他们损失了超过100万美元的资产。建议所有相关方保持警惕,并采取必要的安全措施。[2023/7/6 22:20:40]

确定性地加扰数据

首先,想象一个魔方。

我们从恢复魔方开始。如果我们随机转动魔方,到最后,魔方将会呈现和开始时完全不同的状态。同样,如果我们重新开始,重复完全相同的动作,那么我们会不断得到完全相同的结果。尽管看起来结果可能是随机产生的,但实质上并非如此。这就是“确定性”的意思。

“确定性”在安全存储密码方面起着至关重要的作用。例如,假设我的密码是“iLoveBitcoin”。

21Shares CEO:旗舰BTC ETP流入3000万美元,新一波投资者进入该领域:6月28日消息,加密ETP发行商21Shares的创始人Hany Rashwan在接受CoinDesk采访时表示,21Shares的旗舰BTC ETP流入3000万美元,这标志着新一波投资者进入该领域。[2022/6/28 1:37:20]

我可以使用哈希函数对其进行加扰:

iLoveBitcoin→“2f5sfsdfs5s1fsfsdf98ss4f84sfs6d5fs2d1fdf15”

现在,如果有人看到这个加扰后的版本,他们也不会知道我的原始密码!这一点非常重要,因为这意味着,作为一名网站开发人员,我只需存储用户密码的哈希散列(加扰数据),即可对其进行验证。

当用户进行注册时,我对密码进行哈希散列处理,并将其存储在数据库中。当用户登录时,我只需再次对输入的内容进行哈希散列处理,并比较两个哈希值。由于特定的输入始终会输出相同的哈希值,所以该方法每次都可以成功验证密码。

如果网站以纯文本格式存储密码的话,则会出现巨大的安全漏洞。如果有人入侵该网站,那么他将会能获取所有的电子邮件和密码,并可以尝试在其他网站上使用这些信息进行登录。

CoinShares在德意志交易所发行3个加密ETN产品:CoinShares在德意志交易所发行三个加密 ETN,三个 CoinShares ETN分别跟踪比特币、以太坊和莱特币。CoinShares 是一家总部位于伦敦的加密货币投资基金,是德意志交易所 Xetra 市场上最新的加密交易所交易票据 (ETN) 发行人。(CoinDesk)[2021/6/7 23:18:37]

无论输入是什么,输出大小始终相同

如果对单个单词进行哈希,则输出将是特定的大小(对于特定的哈希函数SHA-256来说,其大小是256bits)。如果对一本书进行哈希,其输出也将是相同的大小。

这是其另一个重要特性,因为这可以节省我们的计算时间。典型的例子是在数据映射中使用哈希散列作为键。数据映射是计算机科学中用来存储数据的简单结构。

当程序在映射中存储数据时,会向映射提供键和值。当程序想要访问该值时,它可以向映射提供适当的键并接收相应的值。数据映射的优势在于它们可以立即找到数据。该键被用作计算机能够立即找到的地址,这样一来,就不必花费数小时在数百万条记录中进行搜索了。

Sushiswap创始人:我卖掉Devshare代币和Sushiswap是不是局没有关系:Sushiswap创始人Chef Nomi再次回应“抛售SUSHI,套现1.8万枚ETH”一事称:“我卖掉Devshare代币和Sushiswap是不是局没有关系,我不知道为什么现在每个人都认为我是个子。我没有偷任何人的钱。Devshare的使用方式在最初的博客文章中已经非常清楚地说明了。”

Chef Nomi还表示,其将继续遵循承诺,推荐验证者选举及合约迁移工作。[2020/9/6]

因为键就像地址一样,不能太大。如果想将书籍存储在数据映射中,则可以对书籍的内容进行哈希散列处理,并使用哈希值作为键。作为一名程序员,我可以轻而易举地使用哈希散列来查找该书的内容,而不必按标题、作者等对数千条记录进行排序。

其工作原理是怎样的呢?

这部分是本文的难点,我会尽量将其简化,省略实际的实现细节,重点介绍计算机在使用哈希散列处理数据时工作原理的基本概念。

下面让我们来看一下我为此专门编写的一个算法——LANEHASH:

FShares Fund正式上线 布局生态投资业务:据官方消息,FShares Group旗下FShares Fund正式上线,布局区块链生态基金投资业务,围绕区块链行业上下游,投资优质资产。FShares Fund是专注加密资产管理、交易服务、项目孵化、基金投资、业务咨询的投融服务机构,与FDEX交易所同属于FShares生态,FDEX承担着交易兑换的功能,FShares生态基金承担着价值输出的功能,具备完整的生态服务系统。[2020/4/14]

我们从要进行哈希散列的数据开始

我把字母和数字转换成1和0(计算机中的所有数据都以1和0的形式进行存储,不同的1和0的组合代表了不同的字母)

此时,我们通过各种预设的步骤对数据进行转换。步骤内容可以是任意的,但重要的是,每次使用LANEHASH时,我们都需要遵循相同的步骤,以便我们的算法具有确定性。我们将前4位从左侧移到右侧:

每隔1位进行间隔:

我们把这两部分转换为以十进制的数字。十进制是我们在学校中学过的“正常的”数字系统。(所有的二进制数据实际上都是数字,你可以在其他网站上在线查询如何将二进制转换为十进制数字)

我们将这两个数字相乘:

然后对该数进行平方:

再将该数字转换回二进制:

从右侧切掉9bits后正好得到16bits:

然后将该二进制数据转换回英语:

如上所示,如果输入相同,那么最后终将会得到相同的输出结果。但是,如果改变任何一个字母,最终的结果也将发生巨大变化。

免责声明:

在我将英语转换成二进制,并将二进制转换成英语的步骤中,并没有遵循任何模式。有许多不同的方法可以将二进制数据转换成英语并转换回去,我只是不想在本文中展开讨论这个问题。感兴趣的话,你可以通过以下链接进行了解:

https://en.wikipedia.org/wiki/ASCII

https://en.wikipedia.org/wiki/Unicode原文:https://hackernoon.com/a-very-basic-intro-to-hash-functions-sha-256-md-5-etc-21wp24jk

标签:SHAHARESHAREAREShareAtHARE PLUSBSHARE币Infinity Arena

LTC热门资讯
SHIB:刚刚,我用火烧了助记词板

刚刚,我用火烧了助记词板前段时间参加了一个征文比赛,主办方送我的礼包里有一个助记词板。 我很喜欢,作为EDC老玩家的我很容易测评这款产品的工业设计:流畅硬朗的外型,磨砂航空铝的触感,有一种鸽子羽.

1900/1/1 0:00:00
区块链:央行数字货币DCEP走进现实:一小步,一大步。

从5月1日起,央行数字货币DCEP将正式在苏州等地开始试点,试点单位员工其工资中的交通补贴的50%将通过央行数字货币的形式发放,数字货币走进现实.

1900/1/1 0:00:00
AIN:会计会失业吗?看全球四大会计事务所如何玩转区块链

财富500强公司董事会的高级管理人员,通常对企业可以使用公共区块链网络的想法持怀疑态度,并大为挑剔.

1900/1/1 0:00:00
ANC:加密货币与传统投资可以比较吗?

加密货币本质上是去中心化的,因此它们很可能成为其他投资品的稳定替代方案。人们参与的最常见的传统投资是股票市场,债券,外汇以及贵金属。CRYPTOvs.股票首先,我们将讨论加密货币与股市相比.

1900/1/1 0:00:00
COM:牛市未到,链上资源已耗尽,比特币“史诗级大拥堵”即将到来?

拥堵、手续费高昂、争吵、扩容、分裂......在比特币的进阶之路上,这些名词始终伴随其右。在经历过2015到2016年的探索、2017年的牛市拥堵、以及严重的社群分裂之后,比特币确立并发展了“隔.

1900/1/1 0:00:00
SER:ChainNode:隐私公链SERO回应销毁质疑,揭秘S++重磅商业布局

4月22日,SERO全球首席战略官TonyTang做客链节点直播间,揭秘SERO完整战略,共话隐私公链的未来.

1900/1/1 0:00:00