Avatar of RadhaKrishnaKiJaya
RadhaKrishnaKiJaya
 asked on

AES-256 Encryption in c#

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!
ASP.NET.NET ProgrammingC#Encryption

Avatar of undefined
Last Comment
RadhaKrishnaKiJaya

8/22/2022 - Mon
David Favor

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.
RadhaKrishnaKiJaya

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

Thank you!
Devin Becker

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
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
RadhaKrishnaKiJaya

ASKER
Thank you Devin.  Do you have any example or sample code to show me?  Thank you!
Devin Becker

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
ASKER CERTIFIED SOLUTION
Kyle Abrahams

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
RadhaKrishnaKiJaya

ASKER
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!
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
RadhaKrishnaKiJaya

ASKER
Thank you guys for your help.