I've written C# ASP.NET code that encrypts a password and stores it in an Access database. The code retrieves the encrypted password but can not decrypt it. Please see encryption and decryption code below. I can only guess that the encrypted string is "corrupted" when storing in Access and thus can not be decrypted. The password is encrypted as a base64 string. Can anyone explain why? Perhaps someone knows of other encryption/decryption code.
static SymmetricAlgorithm encryptionAlgorithm = InitializeEncryptionAlgorithm();static SymmetricAlgorithm InitializeEncryptionAlgorithm() { SymmetricAlgorithm rijaendel = RijndaelManaged.Create(); rijaendel.GenerateKey(); rijaendel.GenerateIV(); return rijaendel; }
/// <summary> /// Encrypts the string and returns a base64 encoded encrypted string. /// </summary> /// <param name="clearText">The clear text.</param> /// <returns></returns> public static string EncryptString(string clearText) { byte[] clearTextBytes = Encoding.UTF8.GetBytes(clearText); byte[] encrypted = encryptionAlgorithm.CreateEncryptor().TransformFinalBlock(clearTextBytes, 0, clearTextBytes.Length); return Convert.ToBase64String(encrypted); }
/// <summary> /// Decrypts the base64 encrypted string and returns the cleartext. /// </summary> /// <param name="encryptedEncodedText">The clear text.</param> /// <exception type="System.Security.Cryptography.CryptographicException">Thrown the string to be decrypted /// was encrypted using a different encryptor (for example, if we recompile and /// receive an old string).</exception> /// <returns></returns> public static string DecryptString(string encryptedEncodedText) { byte[] encryptedBytes = Convert.FromBase64String(encryptedEncodedText); byte[] decryptedBytes = encryptionAlgorithm.CreateDecryptor().TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length); return Encoding.UTF8.GetString(decryptedBytes); }