概述
- 1.古典密碼學(xué)
- 2.現(xiàn)代密碼學(xué)
- 3.公鑰密碼學(xué)
- 4.哈希算法
- 5.比特幣加密使用的函數(shù)的額外特征
- 6.區(qū)塊鏈中的密碼學(xué)
1.古典密碼學(xué)
1949 年以前的密碼學(xué)統(tǒng)稱為古典密碼學(xué)啃勉,安全基于加密算法的保密性扣溺。
2.現(xiàn)代密碼學(xué)
以 1949 年香農(nóng)的信息論的誕生為標(biāo)志。
加密算法旗唁、解密算法同時用一套密鑰仑嗅。因此也叫「對稱加密算法」
3.公鑰密碼學(xué)
需要兩個密鑰「公鑰(Publickey」「私鑰(Privatekey)」
用公鑰進行加密后宴倍,只有對應(yīng)的私鑰能解密,
用私鑰加密无畔,只有對應(yīng)公鑰萌解密啊楚。
4.哈希算法
Hash Function 也稱為散列函數(shù),能計算出一個數(shù)字消息所對應(yīng)的浑彰、長度固定的字符串(又稱消息摘要)的算法恭理。
主要特征
- 輸入的 x 可以是任意長度的字符串
- 輸出結(jié)果 H(x) 長度固定
- 計算 H(x) 的過程高效,對于長度為 n 的字符串郭变,時間復(fù)雜度為 O(n)
5.比特幣加密使用的函數(shù)的額外特征
- 免碰撞颜价,當(dāng) x≠y 時,不會出現(xiàn) H(x)=H(y)
- 隱匿性诉濒,不可能根據(jù) H(x) 推算出 x
- 不存在比窮舉更好的方法
6.區(qū)塊鏈中的密碼學(xué)
- (1) 橢圓曲線算法
比特幣使用了基于secp256k1 橢圓曲線數(shù)學(xué)的公鑰密碼學(xué)算法周伦。它包含私鑰與公鑰,交易發(fā)出方用私鑰進行簽名未荒,并將簽名與原始數(shù)據(jù)發(fā)送給整個比特幣網(wǎng)絡(luò)专挪,網(wǎng)絡(luò)中的所有節(jié)點則用公鑰對交易有效性進行驗證。簽名算法保證了交易是由擁有對應(yīng)私鑰的人所發(fā)出的片排。
數(shù)據(jù)簽名算法的核心在于證明數(shù)據(jù)是簽名者發(fā)出的寨腔、不可抵賴的,而不是待簽名數(shù)據(jù)本身的保密性率寡。 - (2) SHA-256哈希算法
SHA(Secure Hash Algorithm)是一個密碼散列函數(shù)家族迫卢。
包括SHA-1、SHA-224冶共、SHA-256乾蛤、SHA-384和SHA-512五種變體,主要適用于數(shù)字簽名標(biāo)準(zhǔn)捅僵。后4個哈希函數(shù)又并稱為SHA-2家卖。 - (3) 對稱加密算法
AES(Advanced Encryption Standard)是一個對稱分組密碼算法,是美國新的數(shù)據(jù)加密標(biāo)準(zhǔn)而被廣泛應(yīng)用在各個領(lǐng)域庙楚。其大致運作原理和前文的對稱加密算法的流程相同上荡。 - (4) Base58編碼
編碼算法的目的不是為了保護數(shù)據(jù)的安全性,而是為了可讀性醋奠。
可讀性編碼不改變信息內(nèi)容榛臼,只改變信息內(nèi)容的表現(xiàn)形式伊佃,部分編碼算法還加入了容錯校驗功能,以保證傳輸過程中數(shù)據(jù)的準(zhǔn)確性和完整性沛善。
Base58 主要用于產(chǎn)生比特幣的錢包地址航揉。相比 Base64 , Base58 不使用數(shù)字“0”、大寫字母“O”金刁、大寫字母“I”和小寫字母“l(fā)”帅涂,以及“+”和“/”符號。
設(shè)計Base58的主要目的是:
1)避免混淆尤蛮。在某些字體下媳友,數(shù)字0和大寫字母O,以及大寫字母I和小寫字母l非常相似产捞。
2)不使用“+”和“/”的原因是醇锚,非字母或數(shù)字的字符串作為賬號的一部分被接受。
3)沒有標(biāo)點符號坯临,通常不會被從中間分行焊唬。
4)大部分的軟件支持雙擊選擇整個字符串。
比特幣使用了 Base58 算法來對公鑰的 Hash160 及私鑰進行編碼看靠,從而生成以 1 或 3 開頭的比特幣地址及WIF(Wallet Import Format)格式的私鑰赶促。