最近,区块链中的PoC(容量证明)共识机制变得越来越流行。在市场上,使用PoC共识机制的硬币包括Burst,BTCHD等。由于PoC自身的机制,它对加密功能和Shabal函数的复杂性和操作速度有一定要求。可以满足这个特殊要求。因此,在BurstCoin中,Shabal算法被广泛用作PoC共识的基础。 Shabal的名字来自一位名叫S´ebastien Chabal的法国橄榄球运动员。由于他在游戏中的英勇表现以及标志性的胡须和长长的头发,他被昵称为“穴居人”。可以看出,当时Shabal团队对他们开发的算法的期望很高。 Shabal函数是一种加密哈希函数。这是由法国机构(ANR)组织和研究的项目。它的团队成员都是业内有影响力的人物。 Shabal的名称类似于另一个常用的加密哈希函数SHA-256,但实际上它是完全不同的。 SHA-256代表(安全哈希算法),它是由国家安全局(NSA)设计并由美国国家标准技术研究院(NIST)发布的一系列加密哈希函数的变体。 Shabal-256是Shabal功能的变体。它已作为标准哈希函数的竞争对手之一提交给NIST。尽管最终没有选择Shabal,但由于其出色的性能和功能,它已被越来越广泛地使用。大家都知道。 Shabal算法Shabal算法是一种非常慢的算法,它允许输入任意长度的有序比特序列,甚至是空序列。它也适用于任何长度的字节流,但是出于安全考虑,可应用的长度最好小于2 ^ 7位。输入长度可以是任何整数值,并且可以是8的倍数。如果给出位序列,则索引号按左右顺序排列,即第一位的索引为0。有序的位序列:序列中的第一个位称为最左边的位,最后一个位称为最右边的位。 Shabal使用的数据(数据预处理):首先输入序列,即默认将长度不等于0和32的倍数的其他位添加到序列中,然后将序列分为8位组这次是一个组,即一个字节(byte)。第一个字节由最左边的八位组成,接下来的八位是第二个字节,依此类推。由于输入序列长度是32的倍数,因此在此过程中将生成整数个字节,并且字节数是4的倍数。每个字节的值在0到255之间(包括255)。此时,可以将字节值视为基于2的8位序列。此时,最左边的字节是最重要的(它代表数字的正负)。如果将八位组表示为b0,b1,b2。 .b7,则此字节的值等于生成字节字节时的值,最左边的位将自动设置为1(即,它表示为正数)。因此,当向该字节输入8位数字时,该数字的最大值为128,因为最左边的数字不指示该数字的大小,而是指示该数字的正数或负数。 Shabal算法的优缺点:优点:1.设计简单:Shabal设计的目标之一是在确保安全的同时保持简单。 2.安全性:Shabal的结构不可区分,并且对次贷图像攻击具有足够的抵抗力(可以证明),这也是Shabal算法与其他哈希算法相比的主要优势算法一。 3.相对较好的性能:在Shabal中不使用在其他加密算法中非常流行的S-Box,因为它的硬件和软件性能成本都很高。尽管它可以抵抗各种攻击,但此处未使用它,因此Shabal具有相对较好的性能劣势:1.速度慢上图显示了不同算法在不同平台上的性能。 Shabal的性能处于该级别的中下游,因此Shabal是一个相对较慢的算法。 2.数据量相对较大:上图显示了不同算法的数据量,Shabal算法也处于尴尬的位置。与其他算法相比,Shabal中的数据量相对较大。