AES_DECRYPT no C#

bandalho_zune

I'm cool cuz I Fold
Boa tarde pessoal.
Tenho aqui um problema numa aplicação que estou a desenvolver, tenho uma tabela "user" numa BD em MySql e queria guardar um campo encriptado (Password) para isso estou a utilizar a função do Mysql AES_ENCRYPT AES_DECRYPT, através do MySql Query Browser tudo funciona bem, através do C# devolve-me sempre "System.Byte[]".

O query é este :

Código:
"SELECT AES_DECRYPT(Password,'xpto') FROM user WHERE Username = 'teste'"

O método interrogador da BD é:

Código:
public string getValores(string query, int index)
    {

        MySqlDataReader myReader;
        MySqlCommand myCommand = new MySqlCommand(query, Conn.connect);
        if (Conn.connect.State > 0) { Conn.connect.Close(); }
        Conn.connect.Open();
        myReader = myCommand.ExecuteReader();

        try
        {
            while (myReader.Read())
            {
                strValores = Convert.ToString(myReader.GetValue(index));
            }
            return strValores;

        }
        finally
        {
            myReader.Close();
            connect.Close();
            strValores = "";

        }
    }
 
O problema é que ele não devia devolver Byte[] o valor que ele devia devolver é "pass", isto só acontece se estiver a consultar um campo encriptado, num campo VarChar ou outro devolve sempre bem.
 
Ja resolvi! :p bastou alterar no reader a função a usar, em vez de usar GetValue(int) usei GetString(int).
Aqui vai o código a funcionar:
Código:
public string getValores(string query, int index)
    {

        MySqlDataReader myReader;
        MySqlCommand myCommand = new MySqlCommand(query, Conn.connect);
        if (Conn.connect.State > 0) { Conn.connect.Close(); }
        Conn.connect.Open();
        myReader = myCommand.ExecuteReader();

        try
        {
            while (myReader.Read())
            {
                //strValores = Convert.ToString(myReader.GetValue(index));
                strValores = Convert.ToString(myReader.GetString(index));
            }
            return strValores;

        }
        finally
        {
            myReader.Close();
            connect.Close();
            strValores = "";

        }
    }
 
Back
Topo