比特幣中主要用到了密碼學中兩個功能:1.哈希 2.簽名。密碼學中的哈希函數(cryptographtic hash function)
一、哈希函數
哈希函數主要有三個特性:1、碰撞特性(collision resistance);2、隱秘性(Hiding);3、謎題友好(puzzle friendly)。
1、collision resistance
collision resistance 即為輸入兩個輸入值X,Y,經過哈希函數之后得到H(X)=H(Y),即為哈希碰撞。利用哈希碰撞,可以檢測對信息的篡改。假設輸入x1,哈希值為H(x1),此時很難找到一個x2,使得H(x1)=H(x2)。
2、Hiding
hiding 意思是哈希函數的計算過程是單向的,不可逆的。但前提要滿足輸入控件足夠大,且分布均勻。通常我們在實際操作中會使用添加隨機數的方法。假設給定一個輸入值X,可以算出哈希值H(x),但是不能從H(x)推出X。
3、puzzle friendly
通常我們限定輸出的哈希值在一定范圍內,即H(block header + nonce) < target (block header是區塊鏈的鏈頭),這個確定鏈頭范圍的過程即為挖礦。
二、簽名
簽名就相當於每個人的開戶行賬號。公鑰簽名,即開戶賬號,驗證簽名用私鑰,即為賬號密碼。以此來確保比特幣的安全傳輸。