腦錢包-字符串SHA256散列成256bit當做私鑰-彩虹表
腦錢包是開源的程序-->用戶輸入字符串當做密碼-->經過SHA256散列算法-->256長bit位 (即是私鑰)-->進過BASE58編碼
-->可見字符串,便於存儲-->再經過私鑰生成公鑰和錢包地址的流程
BASE58: 比特幣專用,類似base64,單是去除了其中易混淆的字母,如 0 (零), O (大寫字母O), I (大寫的字母i) and l (小寫的字母L) ,和幾個影響雙擊選擇的字符,如/, +
比特幣私鑰-即一個256長bit位(32字節)
a). 私鑰本質是一個256長的bit位,生成方法任意,也可以采用BitCoin自帶的程序隨機生成(所以會有極小極小極小概率重復)
b). 通常看到的私鑰是經過BASE58編碼轉成可見字符串,如5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss
私鑰-->公鑰-->錢包地址
私鑰-->公鑰
a). 比特幣選取的生成算法是橢圓曲線密碼(細節實在不懂啊)下的secp256k1標准, 其公式是y^2 = x^3 + 7
b). 公私鑰關鍵公式: K=k*G, 其中k是我們的私鑰,G為算法基點(對比特幣來說是個固定值),結果K即公鑰是函數曲線上的另外一個點。
k和K的數學運算是單向的,所以不能從公鑰推導出私鑰。
我們的⽬標是找到⽣成點G的倍數kG。 也就是將G相加k次。 在橢圓曲線中, 點的相加等同於從該點畫切線找到與曲線相交的另⼀點, 然后映射到x軸。
c). 公鑰K(65字節)可以用X/Y軸表示,即(x,y)各32字節,一個字節04
公鑰P.X: 06CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385
公鑰P.Y: FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB
公鑰-->錢包地址
a). 將前面得到的公鑰x/Y合並得到標准地址,0406CCAE7536386DA2C5ADD428B099C7658814CA837F94FADE365D0EC6B1519385FF83EC5F2C0C8F016A32134589F7B9E97ACBFEFD2EF12A91FA622B38A1449EEB
進行SHA-256得到B
b). 對B進行進行RIPEMD-160計算,得到C
c). C前面加入地址版本號(比特幣主網版本號"0X00"),得到D
d). 對D進行2次SHA-256得到E
e). 取E的前4個字節作為校驗位加入到D的前面,得到 E(4)D == F -- 即是錢包地址
f). 對F進行Base58編碼即是傳統意義上可見的錢包地址啦