区块链最核心的两个技术点是共识机制和密码学,由于共识机制是公链的基础,接下来讲一讲区块链的密码学基础,有关区块链密码学你只需要了解它的基本原理和优劣即可。
哈希算法是一类数学函数算法,又称散列算法,它是一种数据映射关系。
package mainimport ( md52 "crypto/md5" sha2562 "crypto/sha256" "encoding/hex" "fmt" "io" "os")// 实现md5func md5(data string) { fmt.Println("-----------Md5-----------") mes := []byte(data) m := md52.New() m.Write(mes) s2 := hex.EncodeToString(m.Sum(nil)) fmt.Println(s2)}// 实现sha256func sha256(data string) { fmt.Println("-----------sha256-----------") mes := []byte(data) m := sha2562.New() m.Write(mes) s2 := hex.EncodeToString(m.Sum(nil)) fmt.Println(s2) //对文件中的数据进行加密 fmt.Println("-----------文件读取-----------") file, _ := os.Open("test.txt") h := sha2562.New() io.Copy(h, file) resu := h.Sum(nil) fmt.Println(hex.EncodeToString(resu))}func main() { var hello string = "Hello,World!" md5(hello) sha256(hello)}
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
SHA-256 算法输入报文的最大长度不超过2^64 bit,输入按512-bit 分组进行处理,产生的输出是一个256-bit 的报文摘要。
密码学是所有区块链的基础,所以说如果没有密码学的支撑,区块链将会退化成普通的分布式日志系统。