﻿# Message Body Encryption



Message encryption leverages the pipeline to encrypt the entire serialized message body.

> [!NOTE]
> Data in the message headers is not encrypted.

One way of achieving this is by using a [transport message mutator](/nservicebus/pipeline/message-mutators.md#transport-message-mutators).

<!-- snippet: MessageBodyEncryptor -->

```cs
public class MessageEncryptor :
    IMutateIncomingTransportMessages,
    IMutateOutgoingTransportMessages
{
    public Task MutateIncoming(MutateIncomingTransportMessageContext context)
    {
        context.Body = context.Body.ToArray().Reverse().ToArray();
        return Task.CompletedTask;
    }

    public Task MutateOutgoing(MutateOutgoingTransportMessageContext context)
    {
        context.OutgoingBody = context.OutgoingBody.ToArray().Reverse().ToArray();
        return Task.CompletedTask;
    }
}
```

<!-- endsnippet -->

The encrypting mutator must be injected via dependency injection:

<!-- snippet: UsingMessageBodyEncryptor -->

```cs
endpointConfiguration.RegisterMessageMutator(new MessageEncryptor());
```

<!-- endsnippet -->
