公鑰和私鑰都是屬於密碼學的概念。在現代密碼學體系中,加密和解密采用了不同的密鑰,也就是非對稱密鑰加密系統,每個通信方都需要兩個密鑰,這兩個密鑰就是公鑰和私鑰 。 公鑰是公開的,不需要保密,而私鑰是私有的,對其需要保管和隱蔽,以防別人知道 。
公鑰和私鑰都是屬於密碼學的概念。在現代密碼學體系中,加密和解密采用了不同的密鑰,也就是非對稱密鑰加密系統,每個通信方都需要兩個密鑰,這兩個密鑰就是公鑰和私鑰 。 公鑰是公開的,不需要保密,而私鑰是私有的,對其需要保管和隱蔽,以防別人知道 。
為了讓讀者更容易理解什么是公鑰加密,先來看一個簡單的例子 。 若有兩個用戶 Jack和 Michael, Jack 想把一段文字通過公鑰加密技術發送給 Michael ,而 Michael 有一對公鑰和私鑰,那么這個加密和解密過程如下:首先, Michael 將他的公鑰發送給 Jack ,接着 Jack就用他收到的公鑰對文字進行加密,將加密后的結果發送給 Michael ,最后 Michael 用他的私鑰解密 Jack 發送給他的消息 。 整體過程如圖 2-4 所示:

公鑰認證即通過鑒別一個用戶的私鑰是否正確來鑒別這個用戶的真偽 。 列舉一個簡單的例子, Michael 想讓 Jack 知道自己是真實的 Michael ,而不是其他人假 冒的,所以
Michael 使用私鑰對文件進行簽名,發送給 Jack, Jack 再用 Michael 的公鑰解密文件,從而驗證簽名是否來自真實的 M ichael 。 整體流程如圖 2-5 所示

從上述兩個例子可以看出,公鑰加密是發送者先用公鑰加密,接收者再用私鑰解密,而公鑰認證則是發送者先用私鑰加密,接收者再用公鑰解密以驗證。
以太坊中每個外部賬戶都由一對密匙定義,即一個私鑰和一個公鑰 。 每對密鑰都編碼在一個鑰匙文件里 。 鑰匙文件是 JSON 文本文件,可以用任何文本編輯器打開和瀏覽 。 鑰
匙文件的關鍵部分一一賬戶私鑰,通常使用創建賬戶時設置的密碼進行加密 。 目前最新的密鑰文件格式是: UTC--<created at UTC IS08601>-<address hex> 。 鑰匙文件可以在以太坊
節點數據目錄的 keystore 子目錄下找到 。 打個比方,你在某個銀行開了一個賬戶,可能還開通了電子網銀以綁定到這個賬戶,而公鑰就是你在申請電子賬戶時設置的 ID ,表示賬戶
地址,私鑰就是你在申請賬戶時設置的密碼,通過這個密碼可以打開你的賬戶,實現轉賬 、取現等一系列操作 。
假如 Jack 在以太坊上創建了一個外部賬戶,那么他就有一個公鑰和一個私鑰 。 他可以使用他的私鑰創建數字簽名,而以太坊上另一個賬戶 Michael 可以使用 Jack 的公鑰來驗證
這個簽名是否是用 Jack 的私鑰創建的,即該簽名是否來自真實的 iack。 當你創建一個以太坊錢包的時候,那個由 一長串字符和數字構成的地址其實就是這個賬戶的公鑰 。 一些錢包
軟件可以幫助保管私鑰,你也可以自己保管 。 尤其重要的一點是,如果你弄丟了存有資金的錢包私鑰,那么這個錢包中的資金也就無法轉出,等同於丟失 。 所以一定要記得對私鑰
進行備份 。
目前常見的私鑰有三種形態: Private k町、 Keystore & Password 以及 Memonic code 。
1 ) Private key 就是一份隨機生成的 256 位二進制數字,用戶甚至可以用紙筆來隨機地生成一個私鑰,即隨機寫下一串 256 位的僅包含“。”或“ l ”的字符串 。 該 256 位二進制數字就是私鑰最初始的狀態 。
2 )而在以太坊官方錢包θ 中,私鑰和公鑰將會以加密的方式保存一份 JSON 文件,存儲在 keystore 子目錄下 。 這份 JSON 文件就是 Keystore ,所以用戶需要同時備份 Keystore
和對應的 Password (創建錢包時設置的密碼) 。
3 )最后一種 Memonic code 是由 BIP 39 方案提出的,目的是隨機生成 12 ~ 24 個比較容易記住的單詞,該單詞序列通過 PBKDF2 與 HMAC-SHA512 函數創建出隨機種子,該種子通過 BIP-0032 提案的方式生成確定性錢包 。
