AES-256 Encryption in c#

RadhaKrishnaKiJaya
RadhaKrishnaKiJaya used Ask the Experts™
on
Hello,
I need an AES-256 encryption/decryption example and found one.  How would I know if this is 256 bit encryption?

https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aes?view=netframework-4.7.2

Thank  you!
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
David FavorFractional CTO
Distinguished Expert 2018

Commented:
Easy way to do this is to either call out to the openssl command line tool or use an openssl library binding.

If you call out to the openssl command line tool, your code will tend to work better across openssl releases, as a variety of errors seem to keep cropping up in c# bindings calling openssl libraries directly.

Author

Commented:
Thank you David Favor,
I don't understand what you are saying.

Thank you!
Devin BeckerIdentity Management and Security
Distinguished Expert 2018

Commented:
Radha,

On the page you linked, after the example, it says that the parameter KeySize can be assigned a Key Size, which will allow you to choose between 64, 128, or 256 Key Length. This is not show in the example, but it is possible.

EDIT: it looks like the KeySize is in bytes. which means you would uses a KeySize of 32bytes if you wanted 256Bit encryption.

Hope this helps,

Devin Becker
DevOps Associate @ EE
CompTIA Security+

Learn the essential functions of CompTIA Security+, which establishes the core knowledge required of any cybersecurity role and leads professionals into intermediate-level cybersecurity jobs.

Author

Commented:
Thank you Devin.  Do you have any example or sample code to show me?  Thank you!
Devin BeckerIdentity Management and Security
Distinguished Expert 2018

Commented:
Radha,

Along with the link you had already posted, here is this information: https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aesmanaged.keysize?view=netframework-4.7.2#System_Security_Cryptography_AesManaged_KeySize

EDIT: Also worth noting the difference between bytes and bits. 1 Byte = a combination of 8 bits. 8 bits = 1 byte. 32 bytes = 256 bits. Keep this in mind when writing out your code.

Hope this helps,

Devin Becker
DevOps Associate @ EE

Author

Commented:
Hello Kyle,
I was looking at a another thread where it is defined like this.

                  CCEncryption.m_Key = new byte[0x20];
                  CCEncryption.m_IV = new byte[0x10];

Any idea what does it mean?  What are the variables m_Key and m_IV?   Why are they declared byte[0x20] and byte[0x10]?

I know these are stupid questions.  But, I did not understand.

Thank you!

Author

Commented:
Thank you guys for your help.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial