您的位置首页生活百科

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

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

1、运算速度不同

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

2、依赖平台不同

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

扩展资料

ChaCha20的初始矩阵

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

0x61707865 0x3320646e 0x79622d32 0x6b206574

Key Key Key Key

Key Key Key Key

Counter Counter nonce nonce

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

轮函数

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

QUARTERROUND(X,X,X,X[C]);

QUARTERROUND(X,X,X,X[D]);

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

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

参考资料来源: