区块链之常用数据算法介绍

在深入学习区块链时,不可避免的需要了解密码学。密码学流传已久,有几千年历史,在军事、外交、情报等领域有广泛的的应用。在区块链领域,也大量应用了密码学算法,比如哈希算法和椭圆曲线算法,这些数据加密算法是该技术重要组成部分。下面详细介绍下区块链最常用的三个数据算法。
一、哈希算法
哈希算法又叫散列算法或者摘要算法,是将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。它的原理其实很简单,就是把一段交易信息转换成一个固定长度的字符串,但是只要原始数据稍微改动得到的散列值机会完全不同,因为这个特性,哈希算法通常应用于对数据的完整性校验以及密码验证。故哈希算法是单向加密算法,有3个重要的性质,即抗碰撞性、原像不可逆、难题友好性。区块链中使用该算法生成区块hash、交易hash和完成工作量证明。

常见的哈希算法有:MD2、MD4、MD5、HAVAL、SHA-1、SHA256、SHA512、RipeMD、WHIRLPOOL、SHA3、HMAC
在这里插入图片描述

二、非对称加密算法
有非对称加密必然有对称加密算法,这里顺便简单介绍下对称加密算法。对称加密算法是指在加密和解密时使用的是同一个秘钥。与对称加密算法不同,非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,私钥可以推导出公钥而公钥不可以推导出私钥,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。简单的说是“公钥加密,私钥解密;私钥加密,公钥解密”。

在区块链中,数字签名就是基于上述非对称加密技术,不同点在于数字签名使用私钥生成一个签名,接收方使用公钥进行校验。比如上面用私钥解密得到明文后,用私钥进行签名进行回复,收到回复后用公钥解密得到的内容与数据相同即可证明签名正确。

在区块链技术中常见的签名算法是椭圆曲线加密技术。其算法用对椭圆曲线上的点进行加法或乘法运算来表达。区块链中私钥是一个随机数,通过椭圆曲线签名算法生成公钥。但反向从公钥计算出私钥几乎是不可能的。椭圆曲线签名算法还具有安全性高和存储空间占用小的特点。

日常业务代码使用中,对于需要数据加密情况,一般公钥加密,私钥解密。毕竟公钥可以公开,但是私钥只有你自已知道,你也同样希望只有你自已才能解密;对于需要签名的情况,则私钥加密,公钥解密。好比你的签名只有你自已签的才是真的,别人签的都是假的。

常见非对称加密算法有:RSA、ECC(椭圆曲线加密算法)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
在这里插入图片描述

三、Base58编码算法
和通常base64编码一样,base58编码的作用也是将非可视字符可视化(ASCII化)。但不同的是base58编码去掉了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。而且因为58 不是2的整次幂,所以没有使用类似base64编码中使用直接截取3个字符转4个字符(38=46 , 2的6次方刚好64)的方法进行转换,而是采用我们数学上经常使用的进制转换方法——辗转相除法(本质上,base64编码是64进制,base58是58进制)。
Base58是很多公链地址使用的编码方式,如比特币,主要用于产生钱包地址,这种编码格式不仅实现了数据压缩,保持了易读性,还具有错误诊断功能。

猜你喜欢

转载自blog.csdn.net/qq_41547320/article/details/125766646