Link to home
Start Free TrialLog in
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!
Avatar of David Favor
David Favor
Flag of United States of America image

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

ASKER

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

Thank you!
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
Thank you Devin.  Do you have any example or sample code to show me?  Thank you!
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
Avatar of Kyle Abrahams, PMP
Kyle Abrahams, PMP
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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!
Thank you guys for your help.