從0到1學習區塊鏈–私鑰、公鑰、錢包地址的含義
行情低迷,各大社群的活躍度也在大大降低,之前很多徹夜難眠的微信群、電報群、QQ群等到晚上活躍度明顯降低,2018年對於參與到區塊鏈的很多投資者而言確實是一個低谷熊市,這個熊市持續多久不得而知,那些說熊市什麼來的,除非他是先知或者擁有超能力或者。。。不然純屬瞎蒙,就如同2017年94事件過後有多少想到行情從11月下旬開始(中旬還在低價購買礦機誰知過了幾天價格就開始漲),所以行情的持續時間無法推測和預料,那我們能做的就是生活還得繼續,提高自己的金融知識、寫作能力、各方面的內功可以乘這個時間段提高,靜靜的等待下一波牛市的到來,如果不來對你也無影響因為你所學到的是任何人都無法割到的,不給那些所謂的機構、名人、投機者割韭菜的機會。
下面進入主題,在區塊鏈中我們最常用到的就是錢包地址、但錢包地址背後是由私鑰、公鑰等組成。本文主要講述私鑰、公鑰、錢包地址的原理
一、公鑰演算法與私鑰演算法
1、私鑰演算法
私鑰加密演算法,又稱 對稱加密演算法,因為這種演算法解密金鑰和加密金鑰是相同的。也正因為同一金鑰既用於加密又用於解密,所以這個金鑰是不能公開的。常見的有DES加密演算法、AES加密演算法。DES(包括TripleDES)演算法採用的就是這個辦法,DES演算法每次把資料明文拆分為8位元組為單位的資料塊,一次加密一個數據塊,下一個資料塊使用金鑰和前一個數據塊的加密結果再進行加密,如此逐塊的進行加密,解密時也一樣,逐塊解密再拼接為明文。Dotnet提供的DES演算法實現的DESCryptoServiceProvider(或TripleDESCryptoServiceProvider)類把這些拆分、加密、解密、拼接的過程都在內部實現,不需要開發人員自己去處理,對於開發人員可以認為DES可以直接一次性的加密長資料。先來看一下對稱演算法(以DES為代表)和非對稱演算法(以RSA為代表)的各自特點:稱演算法: 加密方和解密方使用同一個金鑰,必然有個金鑰傳送過程,金鑰的保密性有較大風險。 演算法相對簡單,加密解密速度很快。非對稱演算法: 加密方使用金鑰對中的公鑰,解密方使用金鑰對中的私鑰。
2、公鑰演算法
公鑰加密演算法,也就是 非對稱加密演算法,這種演算法加密和解密的密碼不一樣,一個是公鑰,另一個是私鑰:
公鑰和私鑰成對出現 公開的金鑰叫公鑰,只有自己知道的叫私鑰 用公鑰加密(或簽名)的資料只有對應的私鑰可以解密 用私鑰加密(或簽名)的資料只有對應的公鑰可以解密 如果可以用公鑰解密,則必然是對應的私鑰加的密 如果可以用私鑰解密,則必然是對應的公鑰加的密 公鑰和私鑰是相對存在。
3、錢包地址
公鑰可以生成對應的唯一地址,驗證傳送交易的地址是否和該公鑰生成的地址一致。
二、實現資料的安全傳輸
要實現資料的安全傳輸,當然就要對資料進行加密。如果使用對稱加密演算法,加解密使用同一個金鑰,除了自己儲存外,對方也要知道這個金鑰,才能對資料進行解密。如果你把金鑰也一起傳過去,就存在密碼洩漏的可能。所以我們使用非對稱演算法,過程如下:①接收方 生成一對金鑰,即私鑰和公鑰;②然後,接收方 將公鑰傳送給 傳送方;③傳送方用收到的公鑰對資料加密,再發送給接收方;④接收方收到資料後,使用自己的私鑰解密。 以下為 RSA 結合 TripleDES 演算法 加密解密過程
三、對資訊進行數字簽名
除了保證資料的安全傳輸之外,公鑰體系的另一個用途就是對資料進行簽名。通常“數字簽名”是用來驗證傳送方的身份並幫助保護資料的完整性。例如:一個傳送者 A 想要傳些資料給大家,用自己的私鑰對資料加密,即簽名。這樣一來,所有收到資料的人都可以用傳送者的公鑰進行驗證,便可確認資料是由 A 發出來的了。(因為只有A使用私鑰簽名得到的資訊,才能用這個公鑰來解) 採用數字簽名,可以確認兩點:
保證資訊是由簽名者自己簽名傳送的,簽名者不能否認或難以否認。
保證資訊自簽發後到收到為止未曾作過任何修改。
之所以可以確認這兩點,是因為用公鑰可以解密的必然是用對應的私鑰加的密,而私鑰只有簽名者持有。
四、公鑰演算法的缺點
現實中,公鑰機制也有它的缺點,那就是效率非常低,比常用的私鑰演算法(如 DES 和 AES)慢上一兩個數量級都有可能。所以它不適合為大量的原始資訊進行加密。為了同時兼顧安全和效率,我們通常結合使用公鑰演算法和私鑰演算法:①首先,傳送方使用對稱演算法對原始資訊進行加密。②接收方通過公鑰機制生成一對金鑰,一個公鑰,一個私鑰。③接收方 將公鑰傳送給 傳送方。④傳送方用公鑰對對稱演算法的金鑰進行加密,併發送給接收方。⑤接收方用私鑰進行解密得到對稱演算法的金鑰。⑥傳送方再把已加密的原始資訊傳送給接收方。⑦接收方使用對稱演算法的金鑰進行解密。
總結:1.每個使用者都有一對私鑰和公鑰。a.私鑰用來進行解密和簽名,是給自己用的。b.公鑰由本人公開,用於加密和驗證簽名,是給別人用的。2.當該使用者傳送檔案時,用私鑰簽名,別人用他給的公鑰解密,可以保證該資訊是由他傳送的。即數字簽名。3.當該使用者接受檔案時,別人用他的公鑰加密,他用私鑰解密,可以保證該資訊只能由他看到。即安全傳輸。