我正在尝试使用 NSec.Cryptography 加密(和解密)从一台设备发送到另一台设备的消息,但我发现文档有点含糊。据我了解,我分别需要设备 A 和 B 的 aKey
和PublicKey
。我可以把这些变成SharedSecret
:
var sharedSecret = KeyAgreementAlgorithm.X25519.Agree(encryption.Key, deviceKey);
但是,此共享密钥似乎对加密没有用处,因为该Encrypt(...)
方法要求在其参数中输入密钥:
var cyphertext = AeadAlgorithm.ChaCha20Poly1305.Encrypt(sharedSecret, nonce, new byte[0], message);
^-- will not work
我有多个问题:
- SharedSecret 不能用来加密有什么用?
- 如果该
ChaCha20Poly1305.Encrypt
方法使用一个不能作为共享密钥的密钥,该方法有何用处? - 如何使用 A 的私钥和 B 的公钥加密消息(如 libsodium 中的盒子和秘密盒子)?
注意:我想使用 X25519 键。