libsodium - 使用 crypto_box_easy 来加密文件?

libsodium - Use crypto_box_easy to encrypt files?

我想用 libsodium 中的 public-private-key 方法加密一个大文件 (100 MB)。对于小消息,我使用 crypto_box_easy(),但这不适用于大文件。对文件使用 crypto_box_easy() 的最佳方法是什么?我不能使用密钥,因为我不能安全地交换密钥,因此需要发送者和接收者一个 public 和一个私钥。

我想到的是将文件分成小块(每个 1 MB),加密它们并将它们合并成一个大文件,然后再次拆分并用 crypto_box_open_easy() 再次解密每个块.这是一种有效且——最重要的——安全的方法吗?或者还有其他方法可以使用 public-私钥加密 libsodium 中的文件吗?

谢谢!

由于crypto_box_easy()似乎仅限于内存中的数据并且文件太大,您需要自己执行混合加密。

这相当于创建一个随机对称密钥并使用非对称加密对该密钥进行加密。然后用对称密钥使用 crypto_secretstream... 加密数据。然后结合加密密钥和加密数据。

有关详细信息,请参阅 Hybrid Encryption