A few years ago I wrote a simple wrapper based on MSDN - AesManaged Class code, to obscure values saved in registry (simply to prevent manual tampering with these, nothing more):
public static string    Encrypt( string s, byte[] key, byte[] iv )
{
    byte[]  enc;
    using(  AesManaged aes =    new AesManaged( )  )
    {
        ICryptoTransform    ict =   aes.CreateEncryptor( key, iv );
        using(  MemoryStream ms= new MemoryStream( )  )
        using(  CryptoStream cs= new CryptoStream( ms, ict, CryptoStreamMode.Write )  )
        using(  StreamWriter sw= new StreamWriter( cs )  )
        {
            sw.Write( s );      enc =   ms.ToArray( );
        }
    }
    return  Convert.ToBase64String( enc );
}
public static string    Decrypt( string p, byte[] key, byte[] iv )
{
    string  s=  null;
    using(  AesManaged aes =    new AesManaged( )  )
    {
        ICryptoTransform    ict =   aes.CreateDecryptor( key, iv );
        using(  MemoryStream ms= new MemoryStream( Convert.FromBase64String( p ) )  )
        using(  CryptoStream cs= new CryptoStream( ms, ict, CryptoStreamMode.Read )  )
        using(  StreamReader sr= new StreamReader( cs )  )
        {
            s=  sr.ReadToEnd( );
        }
    }
    return  s;
}
These methods worked perfectly all this time .. until yesterday, when Encrypt produced a null result on a valid string.  Changing key and iv does not make any difference.  Tried executing on several machines - same result.  No exceptions are thrown.  However, decryption still works fine!
Why does Encrypt( ) suddenly fail?  Is there some Windows Update that changed the play-field?