“chacha20-poly1305”“chacha20-ietf-poly1305”有什么区别

2026-04-21 08:56:01

1、运算速度不同

ChaCha20-Poly1305是Google所采用的一种新式加密算法,性能强大,在CPU为精简指令集的ARM平台上尤为显著(ARM v8前效果较明显),在同等配置的手机中表现是AES的4倍,chacha20-ietf-poly1305也是一种新式加密算法,但是比chacha20-poly1305”更快。

2、依赖平台不同

chacha20-poly1305依赖于OpenSSH平台,chacha20-ietf-poly1305依赖于OpenBSD平台。

“chacha20-poly1305”“chacha20-ietf-poly1305”有什么区别

扩展资料

ChaCha20的初始矩阵

ChaCha20有一个初始矩阵,矩阵的输入为一个256位的密钥、64位随机数、64位计数器值以及4×32位的常数,它们均填充在32位整型数组中作为初始矩阵。排列方式如下。

0x61707865 0x3320646e 0x79622d32 0x6b206574

Key[0] Key[1] Key[2] Key[3]

Key[4] Key[5] Key[6] Key[7]

Counter[0] Counter[1] nonce[0] nonce[1]

这里256位密钥即流密码的初始密钥,常数为通信双方在握手协议中协商的定值,计数器值取一个从0开始每次自增1的寄存器(64位)中的值,随机数为伪随机数生成器产生,每次生成密钥矩阵时产生不同的随机数。

轮函数

在矩阵每次完成置换后,都需要执行一次轮函数QUARTERROUND,该函数输入为4个32位串,即4个数组中的元素,输出同样也为4个32位串,这样执行完轮函数后除了数据以外,矩阵结构未发生任何变化,这里拿第一次行置换后的矩阵执行轮函数举例,执行轮函数操作如下。

QUARTERROUND(X[0],X[4],X[8],X[C]);

QUARTERROUND(X[1],X[5],X[9],X[D]);

QUARTERROUND(X[2],X[6],X[A],X[E]);

QUARTERROUND(X[3],X[7],X[B],X[F]);

参考资料来源:百度百科-chacha20-poly1305

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢