Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur aes_encrypt(password) en c# sur req insert

Sujet résolu
    11 juin 2020 à 1:08:36

    Bonsoir, je cherche à entrer des données sur ma bdd (aucun problème pour faire ça).

    J'ai plusieurs champs dont un mot de passe que je dois crypter à l’insertion en BDD puis décrypter sur un select.

    ma méthode qui contient ma requête insert :

            public void setUtilisateur(string region, string nom, string prenom, string mail, string tel, string pass)
            {   
                string req = "INSERT INTO `utilisateur`(`idRegion`, `nom`, `prenom`, `mail`, `password`, `tel`) VALUES ((select idRegion from region where nomRegion = '" + region + "'), '" + nom + "', '" + prenom + "', '" + mail + "', aes_encrypt(@password, 'key'), '" + tel + "')";
    
                MySqlDataReader reader;
    
                connexion.Open();
                
                MySqlCommand Commande = connexion.CreateCommand();
                //utilisation de paramettre pour le password
                Commande.Parameters.AddWithValue("@password", pass);
                Commande.CommandText = req;
    
                reader = Commande.ExecuteReader();
    
                connexion.Close();
            }

    L'erreur qui met présentée et que je dois régler : 

    MySql.Data.MySqlClient.MySqlException : 'Incorrect string value: '\xFAi\xBE:\x14\xB5...' for column `gsb_test`.`utilisateur`.`password` at row 4'

    Mon champs password en BDD est en varchar(255) et UTF8_GENERAL_CI

    Voilà, merci beaucoup pour votre aide.

    Au cas où il y aurai une quelconque erreur sur mon select aussi je met ma requête :) :

            public void setSession(string mail)
            {
                string req = "SELECT idType, nom, prenom, mail, password, tel, point, idUtilisateur, nomRegion, dateGsb, dateRegion FROM utilisateur inner join region on utilisateur.idRegion=region.idRegion WHERE mail='" + mail + "'";
    
                MySqlDataReader reader;
    
                connexion.Open();
    
                MySqlCommand Commande = connexion.CreateCommand();
    
                Commande.CommandText = req;
    
                reader = Commande.ExecuteReader();
    
                while (reader.Read())
                {
                    InscriptionConnexion.type = reader.GetInt32(0);
                    InscriptionConnexion.nom = reader.GetString(1);
                    InscriptionConnexion.prenom = reader.GetString(2);
                    InscriptionConnexion.mail = reader.GetString(3);
                    InscriptionConnexion.pass = reader.GetString(4);
                    InscriptionConnexion.tel = reader.GetString(5);
                    InscriptionConnexion.point = reader.GetInt32(6);
                    InscriptionConnexion.id = reader.GetInt32(7);
                    InscriptionConnexion.region = reader.GetString(8);
                    InscriptionConnexion.dateGsb = reader.GetString(9);
                    InscriptionConnexion.dateReg = reader.GetString(10);
                }
                connexion.Close();
    
                if (InscriptionConnexion.type == 1)
                {
                    InscriptionConnexion.session = 1;
                }
                else
                {
                    InscriptionConnexion.session = 2;
                }
            }





    -
    Edité par ThisThis 11 juin 2020 à 1:10:33

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2020 à 8:56:15

      "varchar" pour une colonne qui doit stocker du binaire, c'est pas top.
      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        11 juin 2020 à 13:32:01

        Edit : J'ai rechangé mon champ password en varbinary et tous fonctionne ! Merci bien !

        ___________________________________

        Bonjour merci pour la réponse !

        j'ai passé mon champ password en binary et ça fonctionne même si j'avoue que je ne comprend pas pourquoi puisque sur la vidéo que j'ai regardé le champ était aussi en varchar et ça fonctionnait.

        Maintenant j'ai un probleme avec ma fonction setSession, quand elle traite le aes_decrypt(password, 'key') elle renvoie null donc quand je fais InscriptionConnexion.pass = reader.GetString(4); une erreur arrive et me dit que c'est null.

        System.Data.SqlTypes.SqlNullValueException : 'Les données sont null. Cette méthode ou propriété ne peut pas être appelée sur des valeurs Null.'

        -
        Edité par ThisThis 11 juin 2020 à 13:52:13

        • Partager sur Facebook
        • Partager sur Twitter

        erreur aes_encrypt(password) en c# sur req insert

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown