当前位置:首页 > 工控原理 > 正文

Shabal算法的优点和缺点解析

来源:网络  发布者:电工基础  发布时间:2026-03-05 08:14
近期区块链中 PoC(Proof of Capacity)共识机制越来越火。在市面中正在使用 PoC 共识机制的币就有 Burst、BTCHD 等。由于 PoC 的自身机制,使得其对加密函数的复杂度和运算速度有一定的要求,而 Shabal 函数正好

近期区块链中 PoC(Proof of Capacity)共识机制越来越火。在市面中正在使用 PoC 共识机制的币就有 Burst、BTCHD 等。由于 PoC 的自身机制,使得其对加密函数的复杂度和运算速度有一定的要求,而 Shabal 函数正好可以实现这个特殊的需求,所以在 BurstCoin 中,广泛使用 Shabal 算法作为 PoC 共识的基础。

Shabal 名字来源于一位名为 S´ebastien Chabal 的法国橄榄球运动员,因为其比赛时的勇猛表现和他那标志性的胡须和长发,被人起了个绰号叫“穴居人”,可见当时 Shabal 的团队对于他们研发的算法的期望是很高的。

Shabal 函数是加密哈希函数的一种,由法国代理商(ANR)组织和研究的一个项目,其团队成员均为业界有一定影响力的人物。Shabal 在名字上与常用的另一种加密哈希函数 SHA-256 相似,但实则完全不同。SHA-256 全称为(Secure Hash Algorithm),即安全哈希算法,是美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数的一个变体。而 Shabal-256 是 Shabal 函数的一个变体,作为标准哈希函数的竞争者之一被提交给 NIST,虽然最后 Shabal 并没有被选中,但是因为其优秀的性能和特点,也越来越广泛地被大家所认知。

Shabal 算法

Shabal算法是一种很慢的算法,允许输入任意长度的有序位序列,甚至是一个空序列。也适应任何长度的字节流,但是由于考虑到安全性,适用长度最好小于 2^7 位。输入长度可以是任何整数值和8的倍数。假如给定一个bit序列,按其左右顺序索引编号,即第一位的索引为0。使用左和右来描述有序的位序列:序列中的第一位称为最左位,最后一位称为最右位。

Shabal的使用的数据(数据的预处理):首先输入序列,即以默认方式添加额外的长度不等于0并且是32的倍数的bit数加入序列,然后将序列分成8位组,此时一个组即为一个byte(字节)。第一个字节由最左边的八位组成,接下来的八位为第二个字节,依此类推。由于输入的序列长度是32的倍数,所以这个过程中会产生整数个字节,并且字节数是4的倍数。每个字节的值都在0和255之间(包括255)。

此时字节值可以看做是以 2 为基底从 8 位的序列中派生出来的,此时最左边的字节是最重要的(其代表了数的正负)。如果一个八位的位组被表示为 b0,b1,b2.。.b7,那么这个字节的值等于

Shabal算法的优点和缺点解析

在 byte 字节产生时,会给最左边的位自动设置为 1(即表示为一个正数)。所以当所给这个字节输入一个 8 位的数时,其数的最大值是 128,因为最左边的位数不表示数的大小,而表示的是数的正负。

Shabal 算法的优点和缺点:

优点:

1. 设计简单:Shabal 在设计的一个目标就是保持简单的同时保证其安全性。

2. 安全性:Shabal 的结构式不可微的,并且有足够良好的次原象攻击抗性(这一点是可以被证明的),并且这一点也是 Shabal 算法与其他的哈希算法相比的主要优势之一。

3. 性能相对较好:Shabal 中没有使用其他加密算法中非常流行的 S-Box ,因为它的性能成本非常高,对于硬件和软件都是如此。虽然使用它能够抵抗各种各样的攻击,但是在这里并没有采用它,所以 Shabal 能够拥有相对较好的性能

缺点:

1. 速度较慢

Shabal算法的优点和缺点解析

上图表示了在不同的平台中不同算法的表现。Shabal 的表现处于中下游水准,所以Shabal是一个相对来说较慢的算法。

2.数据量相对较大:

Shabal算法的优点和缺点解析

上图表示了不同算法的数据量,Shabal 算法也处于一个比较尴尬的位置,相对于其他算法来说,Shabal的数据量是比较大的。

相关热词:#区块链