色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

比特幣的數學原理是什么

呂致盈2年前13瀏覽0評論

比特幣的數學原理是什么?

比特幣的數學原理加密算法一共有兩類:非對稱加密算法(橢圓曲線加密算法)和哈希算法(SHA256,RIMPED160算法)。

橢圓曲線加密算法

試想有一種乘法,可以在已知a,b的情況下計算出c=a*b,但已知c,a不能計算出b。

我們可以利用這種乘法進行加密解密。

設明文m,密文g1,g2。

用公鑰a,c=a*b,r(隨機數)加密:

g1=m+r*c

g2=r*a

用私鑰a,b解密:m=g1-b*g2

證明:

g1-b*g2

=m+r*c-b*r*a

=m+r*c-r*c

=m

我們還可以利用這種乘法進行簽名認證。

設原文m,簽名g1,g2。

用私鑰a,b,r(隨機數)簽名:

x=r*a

g1=SHA(m,x)

g2=r-g1*b

用公鑰驗證:

g2*a+g1*c

=(r-g1*b)*a+g1*c

=r*a-g1*b*a+g1*c

=r*a-g1*c+g1*c

=r*a

=x

計算SHA(m,x)是否和g1相等。

這就是加密解密層面上的橢圓曲線加密算法。

比特幣私鑰(private key),公鑰(public key),公鑰哈希值(pubkeyhash),比特幣地址(address)

公鑰和私鑰由橢圓曲線加密算法生成,私鑰可推出公鑰而反之不能。

有了私鑰,你就可以對文本簽名。別人拿了你的公鑰就可以根據簽名認證你是否擁有私鑰。這就是證明你擁有存款的辦法。

為了安全起見,公鑰應該隱藏起來。所以對公鑰進行哈希加密,生成公鑰哈希值然后計算哈希值的比特幣地址:

公鑰哈希值=RIMPED160(SHA256(公鑰))

比特幣地址=*1*+Base58(0+公鑰哈希值+校驗碼)

校驗碼=前四字節(SHA256(SHA256(0+公鑰哈希值)))

可以看出,地址和公鑰哈希值是等價的(可以互推)但公鑰哈希值只能由公鑰算出(不能逆推)。

驗證的時候需要提供簽名和公鑰,算出公鑰哈希值并和比特幣支出腳本的公鑰哈希值對比,最后再驗證簽名。這樣就保證了公鑰不會出現在支出腳本里。

(收入單提供簽名,支出單提供公鑰,或者收入單提供簽名和公鑰,支出單提供公鑰哈希值,這兩種驗證辦法是比特幣的標準腳本)

哈希(Hash)算法

哈希算法(又稱散列算法)不是加密解密算法,因為其加密的過程是不可逆的(你只能加密不能解密),也沒有所謂的公鑰私鑰的概念。

哈希算法原理是將一段信息轉換成一個固定長度的字符串。這個串字符串有兩個特點:

1、如果某兩段信息是相同的,那么字符串也是相同的。

2、即使兩段信息十分相似,但只要是不同的,那么字符串將會十分雜亂隨機并且兩個字符串之間完全沒有關聯。

信息可以是一串數字,一個文件,一本書。。。。。。只要能編碼成一串數字即可。

顯然,信息有無數多種而字符串的種類是有限的(因為是固定長度),所以這種加密是不可逆的。

哈希算法的用途

1、驗證兩段信息是否相同。

A使用QQ給B傳了一個文件,這個文件會在QQ的服務器上保存下來。如果C也傳了這個文件給D,QQ會對比這個文件的哈希值和A傳給B的文件的哈希值是否相同,如果相同則說明是同一個文件,C就不需要再一次上傳文件給服務器。這就是所謂的秒傳。

一個壓縮包在傳輸的時候可能會有損壞。在壓縮之前計算原文件的哈希值并放入壓縮包中,待解壓后再次計算解壓文件的哈希值。對比壓縮包中的哈希值則可以知道文件是否損壞。BT和迅雷下載中所謂的哈希驗證也是同一道理。

2、驗證某人是否信息持有者。

在一個論壇注冊帳號,如果論壇把密碼保存起來,因為無論壇多么安全都可能會被破解,所以密碼總會有泄漏的可能性。

如果不保存密碼而保存密碼的哈希加密值。當你下次登陸論壇的時候,將你輸入的密碼的哈希值和你注冊時密碼的哈希值比對,如果相同則可以證明你就是密碼持有者了。這樣既保證了密碼泄露的可能,又保證了驗證持有者的功能。

哈希算法的破解

假如論壇被破解了,黑客獲得了哈希值,但黑客只有哈希值依舊是不能登陸論壇的,他得算出用戶的密碼。

他可以隨機產生密碼一個一個試,如果算出的哈希值正好和這個哈希值相同,則說明這個密碼可用。這就是所謂的猜密碼。

顯然,密碼長度越長,密碼越復雜,猜到的可能性就越低。如果有一種辦法能增加這種猜到可能性,使其大到能夠容忍的范圍,則該哈希算法被破解了。

例如原本猜中的概率是1/10000000000000,現在增加到了1/1000。如果每猜一個密碼需要1秒,按照之前的概率猜知道太陽毀滅都可能沒猜中,但后者只需要1小時就足夠了。

另外,由于信息的種類是無限的,所以你猜中的密碼未必就是原先的密碼,它們可能是碰巧哈希值相同而已,這就是所謂的碰撞。

如同增加猜中概率一樣,如果能增加碰撞的概率,那么同樣可以輕易登陸論壇(因為論壇也不知道原本的密碼是什么,所以猜的密碼和原密碼不同也沒關系,只要哈希值相同即可)。

一旦碰撞容易輕易產生,那么哈希算法就被破解了。前幾年鬧得沸沸揚揚的哈希算法破解就是這么回事,數學家通過一定辦法增加了碰撞的概率。

哈希算法的大致加密流程

1、對原文進行補充和分割處理(一般分給為多個512位的文本,并進一步分割為16個32位的整數)。

2、初始化哈希值(一般分割為多個32位整數,例如SHA256就是256位的哈希值分解成8個32位整數)。

3、對哈希值進行計算(依賴于不同算法進行不同輪數的計算,每個512位文本都要經過這些輪數的計算)。

經過這樣處理以后,哈希值就顯得十分雜亂隨機了。

非對稱加密算法

非對稱加密算法是世界上最重要的加密解密算法。所謂非對稱,是指加密和解密用到的公鑰和私鑰是不同的。非對稱加密算法依賴于求解一數學問題困難而驗證一數學問題簡單。

RSA算法

著名的RSA加密算法就是利用了對一個大整數進行因數分解困難,驗證因子組成某個大整數容易的原理而編寫的。

具體說,比如求143的因子,你可能需要進行11次除法才能得到143=11*13的結果。但是要驗證11*13=143,則只需要一次乘法就夠了。

如要破解RSA,只需要能夠快速分解大整數即可,顯然這是破解RSA最簡單最快速的辦法。但要分解大整數是極不容易的(數學上叫做NP-Hard問題),這也就是RSA能保證其不能被破解的原因。

反之,如果人類某天找到了快速分解大整數的辦法(例如利用量子計算機進行計算),則RSA算法就立即被破解了。

RSA算法的大致原理

生成公鑰和私鑰:

1、生成一對大質數p,q,求出n=p*q和f=(p-1)*(q-1)。

2、生成一個隨機數e,滿足e<f且e,f互質。

3、求出e關于f的模逆d,即求出e*d=1 mod f。

設明文為m,密文為g。

用公鑰n,e加密:m^e=g mod n

用私鑰n,d解密:g^d=m mod n

證明解密后的明文就是原先的明文:

根據加密解密規則,將g=m^e mod n代入g^d=m mod n后,發現只要證明m^(e*d)=m mod n即可(同余運算的原理)。

由于e*d=1 mod f,所以只需證明m^(f+1)=m mod n即可。根據歐拉定理,f是歐拉函數所以得證。(具體的數學原理這里不再贅述)

顯然,如果知道了f,就可以根據公鑰n,e計算出d破解明文。要知道f,必須得知道p和q。要知道p和q,必須將n分解。所以RSA的破解依賴于整數分解。