gpt4 book ai didi

encryption - ChaCha20-Poly1305计算错误的mac

转载 作者:行者123 更新时间:2023-12-04 01:31:36 24 4
gpt4 key购买 nike

目前我已经为 Android 和 PHP 构建了一个应用程序,它使用 chacha20-poly1305 加密一些数据。这些工作正常,因为我使用 libsodium 作为它们的主干。
现在我为 Arduino 创建了同样的东西。但是,我为此使用了不同的库。我正在使用以下输入:

Plaintext: 0000000000000001
Nonce: 0000000000000001
Key: b78b94bdf407e2fb0c4cb01e74fee7db743d4d5ab636fe4c181511137dedfc46
在 libsodium 上,它使用 mac 生成以下密文:
78260b2aca088071 3c8eea6f05b671ed72f1bc61fee7cc22
但是在 Arduino 上:
78260b2aca088071 4d888c3b8fe1a4ab8a28d5e593fe7a25
所以我的问题是:两台 Mac 都有效吗?他们不工作,反之亦然,那么Arduino变体的问题是什么?

最佳答案

ChaCha20-Poly1305 有两种变体,原始版本和 IETF 版本。 IETF 版本需要 12 字节的随机数,而原始版本需要 8 字节。

据我了解,IETF 版本的变化是使使用随机数更安全,因为重用的机会更少。

您的 Android/PHP 版本使用的是旧版本,而您的 Arduino 版本使用的是较新的 IETF 版本。

Libsodium implements both variants ,(以及第三个,XChaCha20)。因此,最简单的解决方案可能是更改现有代码以使用 IETF 版本。或者,您可以使用原始变体更改 Arduino 版本,如果您使用的库可能的话。

关于encryption - ChaCha20-Poly1305计算错误的mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57312178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com