主页 > imtoken钱包华为手机安装不了 > 哈希的特点及应用

哈希的特点及应用

哈希币是骗局吗_比特币使用的哈希函数是_以太币比特币是骗局吗

通过上面我们知道,在实践中使用的哈希函数输出值的范围非常大,所以哈希冲突的概率是很低的。在这个前提下,我们可以使用哈希函数做很多事情

1个

哈希表

哈希表是一种通过key-value直接访问数据的数据结构。 我们将数据的key内容作为输入值,通过hash函数得到的输出值作为对应的key值映射到表中的某个位置,这样我们就可以拥有极快的访问速度。 数据量越大,哈希表的访问速度优势越明显。

比如1000万条数据中,一条数据如下,

var p = {
  name'张三',
  phone'131111111111',
  ...
}

哈希币是骗局吗_比特币使用的哈希函数是_以太币比特币是骗局吗

phone 是这个数据的关键内容

如果数组中存储了上千万的数据,那么我必须以phone为匹配条件,遍历query查找数据,可能需要很长时间

如果我把它存储在哈希表中比特币使用的哈希函数是,那么我只需要以手机为输入值就可以得到对应的哈希地址,然后就可以直接访问数据的全部内容了

这就是为什么在前端项目中,大量的数据存储尽量使用Map

2个

比特币使用的哈希函数是_哈希币是骗局吗_以太币比特币是骗局吗

识别内容变化

在实践中,有时直接识别内容的变化可能很麻烦。

比如我们的前端打包在一个按需加载的项目中,最终会生成很多个JS文件,每个JS文件的名字都会加上一个hash值。

app.0dfe0411d4a47ce89c61.js

这个散列值的作用之一就是可以快速判断文件是否发生了变化。 当你重复打包时,我们只需要比较新旧文件的hash值就可以知道该文件是否需要重新打包,从而实现不覆盖更新。

比特币使用的哈希函数是_以太币比特币是骗局吗_哈希币是骗局吗

所以,在团队协作中,如果你希望每个员工都能打包代码,那么我通常会禁止团队成员使用代码格式化工具,因为这个工具可能会调整其他代码,导致打包结果差异很大

或者你可以统一代码格式化工具,但是这个比较难

识别内容变化在区块链中也起着关键作用,而区块链的防篡改特性正是得益于哈希函数。 详细信息将在后续章节中介绍。

3个

加密

比特币使用的哈希函数是_以太币比特币是骗局吗_哈希币是骗局吗

哈希函数是单向的。 也就是说,我们可以通过输入值计算出输出值,但不能通过输出值反推输入值。

Hash(message) -> x
x !-> message

因此,很难从暴露的哈希值中推断出输入值是什么,唯一的尝试方法就是使用暴力破解。

因此,有些客户端在展示一些敏感信息时,可能不会直接展示临时真实的信息,而是展示经过处理的哈希值

当然,这样的加密方式并不适用于需要解密的场景

比特币使用的哈希函数是_以太币比特币是骗局吗_哈希币是骗局吗

在比特币中,我们常说的挖矿就是在做一些类似于暴力破解的事情,试图通过暴力不断尝试,直到得到一个符合约定规则的哈希值。这就是为什么挖矿是一个计算量非常大的过程

4个

sha256

sha256 是比特币中使用的哈希函数。 对于任何长度的信息,sha256都会输出一个256位的哈希值,这是美国国家安全局开发的安全哈希算法。

sha256 具有极强的抗碰撞性。 迄今为止,世界上最强大的超级计算机都不具备人为制造碰撞的能力。当然,如果未来某个时刻技术发展起来,计算能力大大增强,不排除有可能可能很容易做到。 如果这个时候到来,sha256将失去安全性比特币使用的哈希函数是,比特币也将崩盘

我们可以在网上找到很多在线的sha256工具,有兴趣的可以搜索试试

下一章我们介绍区块链的基本数据结构