目前,我已经为Android和PHP构建了一个应用程序,该应用程序使用chacha20-poly1305加密了一些数据。由于我使用libsodium作为它们的主干,因此这些程序工作正常。
但是,现在我为Arduino创建了相同的东西。但是我为此使用了一个不同的库。我正在使用以下输入:
Plaintext: 0000000000000001
Nonce: 0000000000000001
Key: b78b94bdf407e2fb0c4cb01e74fee7db743d4d5ab636fe4c181511137dedfc46
Run Code Online (Sandbox Code Playgroud)
在libsodium上,它使用mac生成以下密文:
78260b2aca088071 3c8eea6f05b671ed72f1bc61fee7cc22
Run Code Online (Sandbox Code Playgroud)
但是在Arduino上:
78260b2aca088071 4d888c3b8fe1a4ab8a28d5e593fe7a25
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:两者都有效吗?反之,它们不起作用,那么Arduino变体可能是什么问题?
ChaCha20-Poly1305有两种变体,原始版本和IETF版本。IETF版本占用12字节的现时值,而原始版本占用8字节。
据我了解,IETF版本的更改是使使用随机数随机数更为安全,因为重用的机会较少。
您的Android / PHP版本使用的是旧版,而Arduino版本使用的是更新的IETF版本。
Libsodium实现了这两个变体(以及第三个变体 XChaCha20)。因此,最简单的解决方案可能是让您更改现有代码以使用IETF版本。或者,您可以使用原始库来更改Arduino版本,如果您使用的库可以的话。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |