Is there an implementation of Authenticated encryption for .NET applications?

The AES API from .NET does not include mode such as GCM. In the documentation, I can only see insecure modes (ECB, CBC, OFB, ...) that can not be use alone.

Very important : I am looking for a mature implementation not a GitHub project used by 1 person or an old/dead project.

closed as off-topic by Jens Erat, Steve, Mark, schroeder, Stephane Jul 27 '15 at 6:57

This question appears to be off-topic. The users who voted to close gave this specific reason:

If this question can be reworded to fit the rules in the help center, please edit the question.


You can safely use bouncy castle.

  • The only thing that bother me is that it was not updated since 2011. "Release 1.7, 7th April 2011" Either it was not review or their was never a security vulnerability found. – h3xStream Jul 23 '15 at 20:15
  • It's fairly wide used in production code implying that its also sufficiently secure. – Sebi Jul 23 '15 at 20:37

There are several libraries that allow for authenticated encryption in .NET.

Bouncy Castle, mentioned in an earlier answer, is not. Microsoft itself offers an open source library that is quite low-level, just wrapping the CNG APIs that offer authenticated symmetric encryption in Windows, called CLR Security.

The CLR Security library is going to be the most mature library you'll find, but it is low level, and so can be used incorrectly. I have written a higher-level library wrapping CLR Security called Cryptocore which exposes a SimpleEncryption API. It won't meet your maturity requirement, but you should at least review it to see how to use CLR Security properly.

  • Sorry, but CLR Security and Cryptocore does not meet the "maturity" requirement. – h3xStream Jul 30 '15 at 4:29
  • @h3xStream Then you're out of luck. There isn't anything more mature than CLR Security, or more widely used than Bouncy Castle. – Xander Jul 30 '15 at 12:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.