生活中我們對文件要簽名,簽名的字跡每個人不一樣,確保了獨特性,當然這還會有模仿,那么對于重要文件再加蓋個手印,指紋是獨一無二的,保證了這份文件是我們個人所簽署的。
那么在區(qū)塊鏈世界里,對應(yīng)的就是數(shù)字簽名,數(shù)字簽名涉及到公鑰、私鑰、哈希、加密算法這些基礎(chǔ)概念。
首先加密算法分為對稱加密算法、非對稱加密算法、哈希函數(shù)加密算法三類。
所謂非對稱加密算法,是指加密和解密用到的公鑰和私鑰是不同的,非對稱加密算法依賴于求解一數(shù)學問題困難而驗證一數(shù)學問題簡單。
非對稱加密系統(tǒng),加密的稱為公鑰,解密的稱為私鑰,公鑰加密,私鑰解密、私鑰簽名,公鑰驗證。
比特幣加密算法一共有兩類:非對稱加密算法(橢圓曲線加密算法)和哈希算法(SHA256,RIMPED160算法)
舉一個例子來說明這個加密的過程:A給B發(fā)一個文件,B怎么知道他接收的文件是A發(fā)的原始文件?
A可以這樣做,先對文件進行摘要處理(又稱Hash,常見的哈希算法有MD5、SHA等)得到一串摘要信息,然后用自己的私鑰將摘要信息加密同文件發(fā)給B,B收到加密串和文件后,再用A的公鑰來解密加密串,得到原始文件的摘要信息,與此同時,對接收到的文件進行摘要處理,然后兩個摘要信息進行對比,如果自己算出的摘要信息與收到的摘要信息一致,說明文件是A發(fā)過來的原始文件,沒有被篡改。否則,就是被改過的。
數(shù)字簽名有兩個作用:
一是能確定消息確實是由發(fā)送方簽名并發(fā)出來的;
二是數(shù)字簽名能確定消息的完整性。

私鑰用來創(chuàng)建一個數(shù)字簽名,公鑰用來讓其他人核對私人密鑰,
而數(shù)字簽名做為一個媒介,證明你擁有密碼,同時并不要求你將密碼展示出來。
以下為概念的定義:
哈希(Hash):
二進制輸入數(shù)據(jù)的一種數(shù)字指紋。
它是一種函數(shù),通過它可以把任何數(shù)字或者字符串輸入轉(zhuǎn)化成一個固定長度的輸出,它是單向輸出,即非常難通過反向推導出輸入值。
舉一個簡單的哈希函數(shù)的例子,比如數(shù)字17202的平方根是131.15639519291463,通過一個簡單的哈希函數(shù)的輸出,它給出這個計算結(jié)果的后面幾位小數(shù),如后幾位的9291463,通過結(jié)果9291463我們幾乎不可能推算出它是哪個輸入值的輸出。
現(xiàn)代加密哈希比如像SHA-256,比上面這個例子要復雜的多,相應(yīng)它的安全性也更高,哈希用于指代這樣一個函數(shù)的輸出值。
私鑰(Private key):
用來解鎖對應(yīng)(錢包)地址的一串字符,例如5J76sF8L5jTtzE96r66Sf8cka9y44wdpJjMwCxR3tzLh3ibVPxh+。
公鑰(Public keycryptography):
加密系統(tǒng)是一種加密手段,它的每一個私鑰都有一個相對應(yīng)的公鑰,從公鑰我們不能推算出私鑰,并且被用其中一個密鑰加密了的數(shù)據(jù),可以被另外一個相對應(yīng)的密鑰解密。這套系統(tǒng)使得你可以先公布一個公鑰給所有人,然后所有人就可以發(fā)送加密后的信息給你,而不需要預(yù)先交換密鑰。
數(shù)字簽名(Digital signature):
Digital signature數(shù)字簽名是這樣一個東西,它可以被附著在一條消息后面,證明這條消息的發(fā)送者就是和某個公鑰相對應(yīng)的一個私鑰的所有人,同時可以保證私鑰的秘密性。某人在檢查簽名的時候,將會使用公鑰來解密被加密了的哈希值(譯者注:這個哈希值是數(shù)據(jù)通過哈希運算得到的),并檢查結(jié)果是否和這條信息的哈希值相吻合。如果信息被改動過,或者私鑰是錯誤的話,哈希值就不會匹配。在比特幣網(wǎng)絡(luò)以外的世界,簽名常常用于驗證信息發(fā)送者的身份 – 人們公布他們自己的公鑰,然后發(fā)送可以被公鑰所驗證的,已經(jīng)通過私鑰加密過的信息。
加密算法(encryption algorithm):
是一個函數(shù),它使用一個加密鑰匙,把一條信息轉(zhuǎn)化成一串不可閱讀的看似隨機的字符串,這個流程是不可逆的,除非是知道私鑰匙的人來操作。加密使得私密數(shù)據(jù)通過公共的因特網(wǎng)傳輸?shù)臅r候不需要冒嚴重的被第三方知道傳輸?shù)膬?nèi)容的風險。
哈希算法的大致加密流程
1、對原文進行補充和分割處理(一般分給為多個512位的文本,并進一步分割為16個32位的整數(shù))。
2、初始化哈希值(一般分割為多個32位整數(shù),例如SHA256就是256位的哈希值分解成8個32位整數(shù))。
3、對哈希值進行計算(依賴于不同算法進行不同輪數(shù)的計算,每個512位文本都要經(jīng)過這些輪數(shù)的計算)。
區(qū)塊鏈中每一個數(shù)據(jù)塊中包含了一次網(wǎng)絡(luò)交易的信息,產(chǎn)生相關(guān)聯(lián)數(shù)據(jù)塊所使用的就是非對稱加密技術(shù)。非對密加密技術(shù)的作用是驗證信息的有效性和生成下一個區(qū)塊,區(qū)塊鏈上網(wǎng)絡(luò)交易的信息是公開透明的,但是用戶的身份信息是被高度加密的,只有經(jīng)過用戶授權(quán),區(qū)塊鏈才能得到該身份信息,從而保證了數(shù)據(jù)的安生性和個人信息的隱私性。
公鑰和私鑰在非對稱加密機制里是成對存在的,公鑰和私鑰可以去相互驗證對方,那么在比特幣的世界里面,我們可以把地址理解為公鑰,可以把簽名、輸密碼的過程理解為私鑰的簽名。
每個礦工在拿到一筆轉(zhuǎn)賬交易時候都可以驗證公鑰和私鑰到底是不是匹配的,如果他們是匹配的,這筆交易就是合法的,這樣每一個人只需要保管好TA自己的私鑰,知道自己的比特幣地址和對方的比特幣地址就能夠安全的將比特幣進行轉(zhuǎn)賬,不需要一個中心化的機構(gòu)來驗證對方發(fā)的比特幣是不是真的。