比特币基础概念–散列(Hash)

栏目:比特币基础 作者:btcer 评论:0 点击: 3,234 次

hash

散列又叫“杂凑”,国内也有根据其英文(Hash)译为哈希,其实从名字的“零散地列出来”、“杂乱地凑起来”来看就知道,这是一种信息摘要算法,而摘要的意思和小学语文的把一段文章的中心大意提取出来类似。在计算机中,散列通常是经过某些特定的手段(例如经过一系列复杂的位运算)提取出某段数据的特征、该特征用来校验(比如验证从网络上下载的一个很大的文件的正确性)。语文课上的概括中心大意是根据概括的内容,你能还原出这段讲的内容是什么,而密码学级别的散列则恰恰相反,它使得你提取出来的表示数据特征的代码绝不能还原(或轻易还原)为原来的数据。

举例,现在流行的一种散列函数叫SHA-1,当你提交一个字符串: “The quick brown fox jumps over the lazy dog”

作为SHA-1的参数时,得到如下摘要信息: 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12

但是哪怕你修改了一个字符: “The quick brown fox jumps over the lazy cog”

得到的结果也会发生翻天覆地的变化: de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3

散列函数的这些特性保证了它不会轻易地通过小的修改和获得摘要的差别分析出算法的漏洞,以保证原始数据的安全。

那么散列函数该怎么用呢?它通常以“证明”的工具用。比如说Alice有一个字符串: “The quick brown fox jumps over the lazy dog”

Bob说我也有那么一个字符串和 Alice 一样,但是Bob并不信任 Alice,万一Alice是伪装那就会把自己真实的字符串泄漏给假 Alice;同时Alice也不信任Bob,因为如果Bob是冒牌的自己一样会把真实的字符串泄漏给假Bob;更可怕的是旁边站着一个间谍Eve时刻监听着Alice和Bob进行字符串交换的过程并且获得该字符串。那么如何让Alice和Bob两人互相相信对方不是冒牌货呢?简单的方法是两人将自己的字符串进行散列运算,然后比对即可。这样就算有人监听或者对方是冒牌货也不会泄漏原始数据。

这些类似SHA-1的散列函数是怎么来的呢?是经过美国国家安全局 (NSA) 设计美国国家标准技术研究院 (NIST) 发布的。而一个著名的散列标准(包括其他的加密标准)公开招标的过程是完全公开的,所有提交的算法和标准都会经过来自全世界无数顶级的密码学家的检验,所以可以基本认为“同时期”流行的散列算法(包括其他加密算法)是安全的。

从以上讨论可以看出散列的过程是不可逆的,所以具备证明原始数据同时保护原始数据的能力。最近很多网站爆出明文密码让众人哗然,因为对密码进行不可逆的散列运算是保证用户信息安全的最最基本的措施之一,而这些网站竟然都没有做该措施(想象一下明文密码泄漏后被人利用会用来尝试登录受害者的邮箱等其他帐号)。

散列函数的功能是将任意长度的不同信息(例如数字、文本或其他信息)转化为长度相等但内容不同的二进制数列(由0 和 1 组成)。以比特币采用的 SHA256 为例,任意长度的信息输入通过这个函数都可以转换成一组长度为 256 个的二进制数字,以便统一的存储和识别。256 个 0 或 1 最多可以组合成 2256个不同的数,这个庞大的集合能够满足与比特币相关的任何标记需要。此外,任意两个不同的信息输入,想要通过 SHA256 产生相同数字输出的概率,可以说微乎其微。因为输入信息的微小变动将会导致输出数字的巨大变化。这就保证了输入信息与输出数字的一一对应。最后,散列还有一个重要特征 ,即想要通过输出数字来反推出输入信息,这是极其困难的。因此,如果想要生成一个特殊的输出数字,就只能通过随机尝试的办法逐个进行正向运算,而不能由输出结果逆向推出输入信息。这个特征是比特币能够顺利运行的重要基石。



0

声明: 本文由( btcer )原创编译,转载请保留链接: 比特币基础概念–散列(Hash)

比特币基础概念–散列(Hash):等您坐沙发呢!

发表评论


    分享到:
11.5K

若觉得本站内容对您有用,欢迎随手打赏

地址 1EwvVKfHm34h8bzKTx8NjT8nHjsRrjGhvm

比特币常用网址:
交易查询(国外):http://blockchain.info/
交易查询(国内):http://qukuai.com
中文维基:https://zh-cn.bitcoin.it/
BTC客户端:http://bitcoin.org/en/choose-your-wallet
行情汇总:http://z.btc123.com/

"In computing we trust."
我们信任计算

什么是比特币?比特币™ (BitCoin)是一种P2P形式的虚拟货币。点对点的传输意味着一个去中心化的支付系统。比特币不依靠特定货币机构发行,它通过特定算法的大量计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。