Я пытаюсь зашифровать (и расшифровать) сообщения, отправляемые с одного устройства на другое, с помощью NSec.Cryptography, но я нахожу документацию немного расплывчатой. Как я понял мне нужны Key
и 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.