{K = k * G}
其中 k 是私鑰,G 是生成點,在該曲線上所得的點 K 是公鑰。因為所有比特幣用戶的生成點是相同的,一個私鑰 k 乘以 G 將得到相同的公鑰 K。k 和 K 之間的關系是固定的,但只能單向運算,即從 k 得到 K。這就是可以把比特幣地址(K 的衍生)與任何人共享而不會泄露私鑰(k)的原因。
因為其中的數學運算是單向的,所以私鑰可以轉換為公鑰,但公鑰不能轉換回私鑰。為實現橢圓曲線乘法,我們以之前產生的私鑰 k 和與生成點 G 相乘得到公鑰 K:
K = 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD * G
公鑰 K 被定義為一個點 K = (x, y):
K = (x, y)
其中,x =
F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF57 9DC341A
y = 07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2 E505BDB
為了展示整數點的乘法,我們將使用較為簡單的實數范圍的橢圓曲線。請記住,其中的數學原理是相同的。我們的目標是找到生成點 G 的倍數 kG。也就是將 G 相加 k 次。在橢圓曲線中,點的相加等同于從該點畫切線找到與曲線相交的另一點,然后映射到 x 軸。
大多數比特幣程序使用 OpenSSL 加密庫進行橢圓曲線計算。例如,調用 EC_POINT_mul() 函數,可計算得到公鑰。








