密码学

信息的加解密:信息的加解密是区块链的关键环节,主要是哈希函数和非对称加密两部分的算法。哈希函数目前主要有SHA家族算法、MD5、SCRYPT、RIPEMD、WHIRLPOOL、CUCKOO HASH、HAVAL、Tiger、LYRA2、Equihash、Hashimoto、Dagger、Ethash(以太坊目前Pow机制下的算法)等多种算法,还有其中算法的串联和并联使用。由于商业应用一般都不考虑挖矿问题和更注重性能问题,Elwin更推荐大家采用常用的SHA256算法为主。而非对称加密部分,主要有非对称加密算法包括RSA、DSA、椭圆曲线算法等,区块链一般使用椭圆曲线算法,包括ECDSA和SCHNORR,还有国密算法(SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组密码算法),其中,比特币使用的签名算法是ECDSA,而Schnorr签名的验证速度比ECDSA签名的快,而且这种签名体积可以更小,还原生地支持多重签名。

Hash哈希(或译作“散列”)是一种函数,它把任何数字或者字符串输入转化成一个固定长度的输出。通过输出我们不可能反向推得输入,除非尝试了所有的可能的输入值。下面是一个简单的哈希函数的例子,平方根:17202的平方根是很容易求得的,它大概是131.15639519291463,所以一个简单的哈希函数的输出可能是输入的数字的平方根的后面几位小数,在这个例子里面就是9291463。但是,只给出9291463的话,我们几乎不可能推算出它是哪个输入的输出。现代加密哈希比如像SHA-256,比上面这个例子要复杂的多也要安全的多。哈希这个词也用于指代这样一个函数的输出值。