• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 比特币哈希函数简述

比特币哈希函数简述

作者:转载 字体:[增加 减小] 来源:互联网 时间:2018-11-03

转载向大家分享了比特币哈希函数简述,其中包含比特币哈希函数等知识点,遇到此问题的同学们可以参考下

对比特币感兴趣的人或多或少应该都听说过“加密哈希函数(cryptographic hash function)”这个术语。但是它究竟是什么意思,与加密货币又有什么联系?

哈希函数不仅是比特币协议的重要部分,还是也是整个信息安全的重要部分。

我们将在下文中通过一些简单的例子来展示哈希函数的工作原理。

什么是哈希函数??

从理论上讲,哈希函数就是一种数学流程,将任意大小的输入数据放入该流程,然后返回固定大小的输出数据。

更具体地讲就是,提取任意长度的字母序列作为输入——我们将其称为string——然后返回一个固定长度的字母序列。无论这个输入string是一个单一的字母,单词,句子还是整部小说,而输出的长度——叫做摘要(digest)——永远都是相同的。

这种类型的哈希函数的常见用例就是存储密码。

当你使用任何一种网络服务创建一种需要密码的用户账户时。这种密码都是通过哈希函数运行的,存储的就是该密码信息的哈希摘要。当你输入密码来登录账号时,然后相同的哈希函数就会去运行你输入的密码,然后服务器就会检查其结果是否与存储的摘要相匹配。

这就意味着即使黑客能够访问用于存储哈希的数据库,他们也不可能立即破坏所有用户账户,因为无法轻易找到生成某一特定哈希的密码。

Python简单哈希函数
?
你可以使用Python(Mac和Linux操作系统在默认情况下安装的编程语言)来实验哈希值。(本教程假设使用了某种版本的OSX或者Linux系统,因为Windows使用Python会更加复杂)

首先,打开终端,输入python并点击Enter。

然后你将进入Python REPL,在这种环境下,你可以直接试用Python命令,而不是在单独的文件中编写程序。

然后输入以下数值,在每行之后敲击Enter,并在标记处输入TAB:

import hashlib
def hash(mystring):
[TAB] hash_object = hashlib.md5(mystring.encode())
[TAB] print(hash_object.hexdigest())
[ENTER]
这样你就创建了一个函数——hash(),该函数将计算出某一特定的使用MD5哈希算法的字符串的哈希值。将字符串插入上述的括号()中便可运行该函数。例如:

hash(“CoinDesk rocks”)

按下Enter并查看该字符串的哈希摘要。

你将看到在同一字符串上调用该哈希函数将会总是生成相同的哈希,但添加或改变其中的某一个字符将会生成一种完全不同的哈希值:
hash("CoinDesk rocks") => 7ae26e64679abd1e66cfe1e9b93a9e85
hash("CoinDesk rocks!") => 6b1f6fde5ae60b2fe1bfe50677434c88

比特币哈希函数
?
在比特币协议中,哈希函数是区块哈希算法的一部分,区块哈希算法可以用来通过挖矿流程将新的交易编写到区块链中。

在比特币挖矿过程中,函数的输入都是来自于最近的尚未确认的交易(以及一些与前一个区块相关的时间戳和引用一些额外输入)

在以上代码示例中,我们已经看到改变哈希函数中的一小部分会导致产生一种完全不同的输出。这个属性与挖矿过程中的“工作量证明(POW)”算法至关重要:为了成功“解决”一个区块,矿工需要以这种方式将所有输入与他们自己的输入数据结合,由此产生的哈希将以某些0开头。

作为一种基础的演示,我们可以通过在“CoinDesk rocks!”后面手动添加尝试感叹号(!),以此尝试使用我们的Python哈希函数来进行“挖矿”,知道我们找到以单个0开头的哈希。
>>> hash("CoinDesk rocks!!")
66925f1da83c54354da73d81e013974d
>>> hash("CoinDesk rocks!!!")
c8de96b4cf781a6373766c668ceac0f0
>>> hash("CoinDesk rocks!!!!")
9ea367cea6a2cc4a6f5a1d9a334d0d9e
>>> hash("CoinDesk rocks!!!!!")
b8d43387d98f035e2f0ac49740a5af38
>>> hash("CoinDesk rocks!!!!!!")
0fe46518541f4739613b9ce29ecea6b6 => SOLVED!
当然,为比特币区块解决哈希——编写该文时,必须以18个0开头——需要一个非常大的计算量(比特币网络的所有计算机处理能力结合在一起仍旧需要接近10分钟才能解决一个区块)。

需要大量的处理能力就意味着新比特币的挖掘需要一个长期的过程才能完成,而无法一次性将所有的比特币全部挖出。

为了能够从挖矿中赚取比特币,你需要投入大量的工作来解决区块——通过获得这种奖励,你将所有的新交易锁入区块中,也就是添加到之前所有交易的永久性记录中:区块链。

更多区块链数字货币资讯:http://www.weikejianghu.com/blockchain/blockchain.html

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-11-03区块链支付概念项目介绍
  • 2018-11-03委托证明共识算法的利弊分析
  • 2018-11-03如何从加密货币里获得被动收益
  • 2018-11-03史上最全区块链领域术语集合
  • 2018-11-03挖矿生态系统的简单指南——GPU、矿池和合并挖矿
  • 2018-11-03区块链的未来应用蓝图
  • 2018-11-03多空双方力量浮标- AD(Chaikin A/D线)策略
  • 2018-11-03FCoin交易所账户注册流程
  • 2018-11-03比特币现金(BCH)就是比特币
  • 2018-11-03BitShares|比特股账户权限和多重签名功能介绍

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • WebAssembly的前世今生
    • BITHD(比特护盾)详细使用教程
    • 胖协议 vs 胖 dApp vs 胖钱包
    • DPOS共识算法——缺失的白皮书【万云译文】
    • 区块链记账原理
    • 区块链基础知识——什么是挖矿(ASIC挖矿)
    • 泰达币USDT是什么?USDT如何兑换美元?
    • 美国大学参与区块链的申请
    • Hcash POS钱包挖矿教程(Windows版)
    • 如何从加密货币里获得被动收益

关于我们 - 联系我们 - 免责声明 - 网站地图

©2015-2018 All Rights Reserved. 微课江湖 版权所有