Menu
Encrypt, decrypt and generate a key in C# using AES256.
Generate 256 Bit Key C For Windows 7
- AES provides below bits based on secret key size. 16 length key size then AES-128 bit will be applicable. 24 length key size then AES-192 bit will be applicable. 32 length key size then AES-256 will be applicable. Key sizes: 128, 192 or 256 bits Rounds: 10, 12 or 14 (depending on key size).
- Oct 05, 2016 In addition System.Random is not thread-safe so it cannot be shared across multiple threads. The RNGCryptoServiceProvider class will generate random bytes in a fixed-length byte array. Cryptographic algorithms require keys of specific length such as 32-bit or 256-bit keys.
- Feb 05, 2013 Hi, I have a requirement like.I want to generate a 32 character random key of alphanumeric like '1D456392EA17CECD8FF211' and this key will assigned to the.
Generate 256 Bit Key C Key
encryption.cs
For example, AES has 3 choices: 128-bit, 192-bit, // or 256-bit. In the ChaCha20 algorithm, the key size must always be 256-bits (32-bytes). // Both sides (encryptor and decryptor) must be in possession of the same secret key // in order to communicate. Whichever side generates the key, it must somehow // deliver the key to the other side.
#regionEncryption |
/// <summary> |
/// Generate a private key |
/// From : www.chapleau.info/blog/2011/01/06/usingsimplestringkeywithaes256encryptioninc.html |
/// </summary> |
privatestaticstringGenerateKey(intiKeySize) |
{ |
RijndaelManagedaesEncryption=newRijndaelManaged(); |
aesEncryption.KeySize=iKeySize; |
aesEncryption.BlockSize=128; |
aesEncryption.Mode=CipherMode.CBC; |
aesEncryption.Padding=PaddingMode.PKCS7; |
aesEncryption.GenerateIV(); |
stringivStr=Convert.ToBase64String(aesEncryption.IV); |
aesEncryption.GenerateKey(); |
stringkeyStr=Convert.ToBase64String(aesEncryption.Key); |
stringcompleteKey=ivStr+','+keyStr; |
returnConvert.ToBase64String(ASCIIEncoding.UTF8.GetBytes(completeKey)); |
} |
/// <summary> |
/// Encrypt |
/// From : www.chapleau.info/blog/2011/01/06/usingsimplestringkeywithaes256encryptioninc.html |
/// </summary> |
privatestaticstringEncrypt(stringiPlainStr, stringiCompleteEncodedKey, intiKeySize) |
{ |
RijndaelManagedaesEncryption=newRijndaelManaged(); |
aesEncryption.KeySize=iKeySize; |
aesEncryption.BlockSize=128; |
aesEncryption.Mode=CipherMode.CBC; |
aesEncryption.Padding=PaddingMode.PKCS7; |
aesEncryption.IV=Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(iCompleteEncodedKey)).Split(',')[0]); |
aesEncryption.Key=Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(iCompleteEncodedKey)).Split(',')[1]); |
byte[] plainText=ASCIIEncoding.UTF8.GetBytes(iPlainStr); |
ICryptoTransformcrypto=aesEncryption.CreateEncryptor(); |
byte[] cipherText=crypto.TransformFinalBlock(plainText, 0, plainText.Length); |
returnConvert.ToBase64String(cipherText); |
} |
/// <summary> |
/// Decrypt |
/// From : www.chapleau.info/blog/2011/01/06/usingsimplestringkeywithaes256encryptioninc.html |
/// </summary> |
privatestaticstringDecrypt(stringiEncryptedText, stringiCompleteEncodedKey, intiKeySize) |
{ |
RijndaelManagedaesEncryption=newRijndaelManaged(); |
aesEncryption.KeySize=iKeySize; |
aesEncryption.BlockSize=128; |
aesEncryption.Mode=CipherMode.CBC; |
aesEncryption.Padding=PaddingMode.PKCS7; |
aesEncryption.IV=Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(iCompleteEncodedKey)).Split(',')[0]); |
aesEncryption.Key=Convert.FromBase64String(ASCIIEncoding.UTF8.GetString(Convert.FromBase64String(iCompleteEncodedKey)).Split(',')[1]); |
ICryptoTransformdecrypto=aesEncryption.CreateDecryptor(); |
byte[] encryptedBytes=Convert.FromBase64CharArray(iEncryptedText.ToCharArray(), 0, iEncryptedText.Length); |
returnASCIIEncoding.UTF8.GetString(decrypto.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length)); |
} |
#endregion |
commented Jun 6, 2014
hi fairly new to the cryptography... when im implementing the above code im getting a error while decrypting.. 'Padding is invalid and cannot be removed.' please suggest a resolution thanks and regards |
commented Oct 9, 2017 • edited
edited
How-to save -safely- the private key ? Windows registry ? in disk ? I use ASP.NET applications. Test your code |
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment