Handles payload encryption according to RFC 8291 and RFC 8292.
@type encrypted_payload() :: %{ ciphertext: binary(), salt: binary(), as_public_key: binary() }
@spec encrypt(String.t(), map()) :: {:ok, encrypted_payload()} | {:error, atom()}