Bitcoin Forum
October 15, 2024, 05:36:46 AM
Welcome,
Guest
. Please
login
or
register
.
News
: Latest Bitcoin Core release:
28.0
[
Torrent
]
Home
Help
Search
Login
Register
More
Bitcoin Forum
>
Local
>
中文 (Chinese)
>
媒体
>
比特币哈希函数简述
Pages: [
1
]
« previous topic
next topic »
Print
Author
Topic: 比特币哈希函数简述 (Read 264 times)
may13381622239
(OP)
Full Member
Offline
Activity: 169
Merit: 100
比特币哈希函数简述
February 20, 2017, 06:27:46 AM
#1
对比特币感兴趣的人或多或少应该都听说过“加密哈希函数(cryptographic hash function)”这个术语。但是它究竟是什么意思,与加密货币又有什么联系?
bitcoin-computer-e1487366312963
哈希函数不仅是比特币协议的重要部分,还是也是整个信息安全的重要部分。
我们将在下文中通过一些简单的例子来展示哈希函数的工作原理。
什么是哈希函数?
从理论上讲,哈希函数就是一种数学流程,将任意大小的输入数据放入该流程,然后返回固定大小的输出数据。
更具体地讲就是,提取任意长度的字母序列作为输入——我们将其称为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并查看该字符串的哈希摘要。
你将看到在同一字符串上调用该哈希函数将会总是生成相同的哈希,但添加或改变其中的某一个字符将会生成一种完全不同的哈希值:
比特币哈希函数
在比特币协议中,哈希函数是区块哈希算法的一部分,区块哈希算法可以用来通过挖矿流程将新的交易编写到区块链中。
在比特币挖矿过程中,函数的输入都是来自于最近的尚未确认的交易(以及一些与前一个区块相关的时间戳和引用一些额外输入)
在以上代码示例中,我们已经看到改变哈希函数中的一小部分会导致产生一种完全不同的输出。这个属性与挖矿过程中的“工作量证明(POW)”算法至关重要:为了成功“解决”一个区块,矿工需要以这种方式将所有输入与他们自己的输入数据结合,由此产生的哈希将以某些0开头。
作为一种基础的演示,我们可以通过在“CoinDesk rocks!”后面手动添加尝试感叹号(!),以此尝试使用我们的Python哈希函数来进行“挖矿”,知道我们找到以单个0开头的哈希。
当然,为比特币区块解决哈希——编写该文时,必须以18个0开头——需要一个非常大的计算量(比特币网络的所有计算机处理能力结合在一起仍旧需要接近10分钟才能解决一个区块)。
需要大量的处理能力就意味着新比特币的挖掘需要一个长期的过程才能完成,而无法一次性将所有的比特币全部挖出。
为了能够从挖矿中赚取比特币,你需要投入大量的工作来解决区块——通过获得这种奖励,你将所有的新交易锁入区块中,也就是添加到之前所有交易的永久性记录中:区块链。
von max
Full Member
Offline
Activity: 182
Merit: 100
Re: 比特币哈希函数简述
February 20, 2017, 02:17:52 PM
#2
好像是币看上面文章
吧!
von schiller
Full Member
Offline
Activity: 154
Merit: 100
Re: 比特币哈希函数简述
February 20, 2017, 02:49:57 PM
#3
写的挺不错啊!
gornicky
Newbie
Offline
Activity: 41
Merit: 0
⇾
Re: 比特币哈希函数简述
February 21, 2017, 10:44:11 AM
#4
不错,很专业的解答
lzqjvh
Full Member
Offline
Activity: 140
Merit: 100
Re: 比特币哈希函数简述
February 21, 2017, 02:28:15 PM
#5
解决了一些疑问,
Pages: [
1
]
Print
Bitcoin Forum
>
Local
>
中文 (Chinese)
>
媒体
>
比特币哈希函数简述
« previous topic
next topic »
Jump to:
Please select a destination:
-----------------------------
Bitcoin
-----------------------------
=> Bitcoin Discussion
===> Legal
===> Press
===> Meetups
===> Important Announcements
=> Development & Technical Discussion
===> Wallet software
=====> Electrum
=====> Bitcoin Wallet for Android
=====> BitcoinJ
=====> Armory
=====> Mycelium
=====> Hardware wallets
=> Mining
===> Mining support
===> Pools
===> Mining software (miners)
===> Hardware
=====> Group buys
===> Mining speculation
=> Bitcoin Technical Support
=> Project Development
-----------------------------
Economy
-----------------------------
=> Economics
===> Speculation
=> Marketplace
===> Goods
=====> Computer hardware
=====> Digital goods
=======> Invites & Accounts
=====> Collectibles
===> Services
===> Currency exchange
===> Gambling
=====> Games and rounds
=====> Investor-based games
=====> Gambling discussion
===> Lending
=====> Long-term offers
===> Securities
===> Auctions
===> Service Announcements
=====> Micro Earnings
===> Service Discussion
=====> Web Wallets
=====> Exchanges
=> Trading Discussion
===> Scam Accusations
===> Reputation
-----------------------------
Other
-----------------------------
=> Meta
===> New forum software
===> Bitcoin Wiki
=> Politics & Society
=> Beginners & Help
=> Off-topic
=> Serious discussion
===> Ivory Tower
=> Archival
===> Корзина
===> CPU/GPU Bitcoin mining hardware
===> Chinese students
===> Obsolete (buying)
===> Obsolete (selling)
===> MultiBit
-----------------------------
Alternate cryptocurrencies
-----------------------------
=> Altcoin Discussion
=> Announcements (Altcoins)
===> Tokens (Altcoins)
=> Mining (Altcoins)
===> Pools (Altcoins)
=> Marketplace (Altcoins)
===> Service Announcements (Altcoins)
===> Service Discussion (Altcoins)
===> Bounties (Altcoins)
=> Speculation (Altcoins)
-----------------------------
Local
-----------------------------
=> العربية (Arabic)
===> العملات البديلة (Altcoins)
=====> النقاشات
===> إستفسارات و أسئلة المبتدئين
===> التعدين
===> النقاشات الأخرى
===> منصات التبادل
=> Bahasa Indonesia (Indonesian)
===> Marketplace (Bahasa Indonesia)
===> Mining (Bahasa Indonesia)
===> Altcoins (Bahasa Indonesia)
===> Trading dan Spekulasi
===> Ekonomi, Politik, dan Budaya
===> Topik Lainnya
=> Español (Spanish)
===> Mercado y Economía
=====> Servicios
=====> Trading y especulación
===> Hardware y Minería
===> Esquina Libre
===> Mercadillo
=====> Mexico
=====> Argentina
=====> España
=====> Centroamerica y Caribe
===> Primeros pasos y ayuda
===> Altcoins (criptomonedas alternativas)
=====> Minería de altcoins
=====> Servicios
=====> Tokens (Español)
=> 中文 (Chinese)
===> 跳蚤市场
===> 山寨币
===> 媒体
===> 挖矿
===> 离题万里
=> Hrvatski (Croatian)
===> Trgovina
===> Altcoins (Hrvatski)
=====> Announcements (Hrvatski)
===> Off-topic (Hrvatski)
=> Deutsch (German)
===> Anfänger und Hilfe
===> Mining (Deutsch)
===> Trading und Spekulation
===> Projektentwicklung
===> Off-Topic (Deutsch)
===> Treffen
===> Presse
===> Altcoins (Deutsch)
=====> Announcements (Deutsch)
===> Marktplatz
=====> Auktionen
=====> Suche
=====> Biete
=> Ελληνικά (Greek)
===> Αγορά
===> Mining Discussion (Ελληνικά)
===> Altcoins (Ελληνικά)
=====> Altcoin Announcements (Ελληνικά)
=====> Altcoin Mining (Ελληνικά)
=> עברית (Hebrew)
=> Français
===> Actualité et News
===> Débutants
===> Discussions générales et utilisation du Bitcoin
===> Mining et Hardware
===> Économie et spéculation
===> Place de marché
=====> Échanges
=====> Produits et services
=====> Petites annonces
===> Le Bitcoin et la loi
===> Wiki, documentation et traduction
===> Développement et technique
===> Vos sites et projets
===> Hors-sujet
===> Altcoins (Français)
=====> Annonces
=> India
===> Mining (India)
===> Marketplace (India)
===> Regional Languages (India)
===> Press & News from India
===> Alt Coins (India)
===> Buyer/ Seller Reputations (India)
===> Off-Topic (India)
=> Italiano (Italian)
===> Guide (Italiano)
===> Progetti
===> Discussioni avanzate e sviluppo
===> Trading, analisi e speculazione
===> Mercato
=====> Mercato valute
=====> Beni
=====> Servizi
=====> Esercizi commerciali
=====> Hardware/Mining (Italiano)
=====> Gambling (Italiano)
===> Accuse scam/truffe
===> Mining (Italiano)
===> Alt-Currencies (Italiano)
=====> Annunci
===> Raduni/Meeting (Italiano)
===> Crittografia e decentralizzazione
===> Off-Topic (Italiano)
=> 日本語 (Japanese)
===> アルトコイン
=> Nederlands (Dutch)
===> Markt
===> Gokken/lotterijen
===> Mining (Nederlands)
===> Beurzen
===> Alt Coins (Nederlands)
===> Off-topic (Nederlands)
===> Meetings (Nederlands)
=> Nigeria (Naija)
===> Politics and society (Naija)
===> Off-topic (Naija)
=> 한국어 (Korean)
===> 대체코인 Alt Coins (한국어)
=> Pilipinas
===> Altcoins (Pilipinas)
=====> Altcoin Announcements (Pilipinas)
===> Pamilihan
===> Others (Pilipinas)
=> Polski
===> Tablica ogłoszeń
===> Alternatywne kryptowaluty
=====> Nowe kryptowaluty i tokeny
=====> Tablica ogłoszeń (altcoiny)
=> Português (Portuguese)
===> Primeiros Passos (Iniciantes)
===> Economia & Mercado
===> Mineração em Geral
===> Desenvolvimento & Discussões Técnicas
===> Criptomoedas Alternativas
===> Brasil
===> Portugal
=> Русский (Russian)
===> Новички
===> Бизнес
=====> Барахолка
=====> Обменники
===> Идеи
===> Кодеры
===> Майнеры
===> Политика
===> Трейдеры
===> Альтернативные криптовалюты
=====> Токены
=====> Бayнти и aиpдpoпы
===> Хайпы
===> Работа
===> Разное
===> Oбcyждeниe Bitcoin
=====> Новости
=====> Юристы
=> Română (Romanian)
===> Anunturi importante
===> Offtopic
===> Market
=====> Discutii Servicii
===> Minerit
===> Tutoriale
===> Bine ai venit!
===> Presa
===> Altcoins (Monede Alternative)
=====> Anunturi Monede Alternative
=> Skandinavisk
=> Türkçe (Turkish)
===> Bitcoin Haberleri
===> Pazar Alanı
===> Madencilik
===> Ekonomi
===> Servisler
=====> Fonlar
===> Proje Geliştirme
===> Alternatif Kripto-Paralar
=====> Madencilik (Alternatif Kripto-Paralar)
=====> Duyurular (Alternatif Kripto-Paralar)
===> Konu Dışı
===> Yeni Başlayanlar & Yardım
===> Buluşmalar
=> Other languages/locations
Loading...