Click here to Skip to main content
16,017,788 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hiya,

I am looking for a way of decrypting a string with AES. I have the encryptedpassword and also the Advanced Encryption Standard Vector.

This is my first step with cryptography so any help would be much appreciated!

Anyone offer any advice?
Posted

Hi,
maybe it will help you:

Implementing AES encryption in C #
/// <summary> /// Encrypts a string /// </summary>
        ///Text to be encrypted
        ///Password to encrypt with
        ///Salt to encrypt with
        ///Can be either SHA1 or MD5
        ///Number of iterations to do
        ///Needs to be 16 ASCII characters long
        ///Can be 128, 192, or 256
        /// <returns>An encrypted string</returns>
        public static string Encrypt(string plainText, string password,
             string salt = "Kosher", string hashAlgorithm = "SHA1",
           int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
            int keySize = 256)
        {
            if (string.IsNullOrEmpty(plainText))
                return "";

            byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
            byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
            byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);

            PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes (password, saltValueBytes, hashAlgorithm, passwordIterations);
            byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);
            RijndaelManaged symmetricKey = new RijndaelManaged();
            symmetricKey.Mode = CipherMode.CBC;

            byte[] cipherTextBytes = null;

            using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes))
            {
                using (MemoryStream memStream = new MemoryStream())
                {
                    using (CryptoStream cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
                        cryptoStream.FlushFinalBlock();
                        cipherTextBytes = memStream.ToArray();
                        memStream.Close();
                        cryptoStream.Close();
                    }
                }
            }

            symmetricKey.Clear();
            return Convert.ToBase64String(cipherTextBytes);
        }


The implementation of AES decryption in C #
/// <summary> /// Decrypts a string /// </summary>
///Text to be decrypted
///Password to decrypt with
///Salt to decrypt with
///Can be either SHA1 or MD5
///Number of iterations to do
///Needs to be 16 ASCII characters long
///Can be 128, 192, or 256
/// <returns>A decrypted string</returns>
public static string Decrypt(string cipherText, string password,
   string salt = "Kosher", string hashAlgorithm = "SHA1",
   int passwordIterations = 2, string initialVector = "OFRna73m*aze01xY",
    int keySize = 256)
{
    if (string.IsNullOrEmpty(cipherText))
        return "";

    byte[] initialVectorBytes = Encoding.ASCII.GetBytes(initialVector);
    byte[] saltValueBytes = Encoding.ASCII.GetBytes(salt);
    byte[] cipherTextBytes = Convert.FromBase64String(cipherText);

    PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltValueBytes, hashAlgorithm, passwordIterations);
    byte[] keyBytes = derivedPassword.GetBytes(keySize / 8);

    RijndaelManaged symmetricKey = new RijndaelManaged();
    symmetricKey.Mode = CipherMode.CBC;

    byte[] plainTextBytes = new byte[cipherTextBytes.Length];
    int byteCount = 0;

    using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes))
    {
        using (MemoryStream memStream = new MemoryStream(cipherTextBytes))
        {
            using (CryptoStream cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read))
            {
                byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
                memStream.Close();
                cryptoStream.Close();
            }
        }
    }

    symmetricKey.Clear();
    return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);
}


Here you can read about it:
http://stackoverflow.com/questions/3226813/how-can-i-decrypt-a-string-using-aes-algorithm-in-c[^]

http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net[^]

http://www.digizol.org/2009/10/java-encrypt-decrypt-jce-salt.html[^]

Regards,
Alex

P/S. If it help you, do not forget to vote :)
 
Share this answer
 
I found a sample here[^], first result on Google for "c# aes".
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900