예제 #1
0
 public ContactManager(Dossier dossierRoot)
 {
     DossierRoot           = dossierRoot;
     Current               = DossierRoot;
     Parent                = DossierRoot;
     FabriqueSerialisation = new FabriqueSerialisation();
 }
예제 #2
0
        public void ajouterdossier(string nomDossier)
        {
            Dossier nvoDossier = new Dossier(nomDossier);

            Current.ListeDossier.Add(nvoDossier);
            Parent  = Current;
            Current = Current.ListeDossier.ElementAt(Current.ListeDossier.Count - 1);
            Console.WriteLine("\nDossier '" + nvoDossier.Nom + "' ajouté sous " + Parent.Nom + " en position " + Parent.ListeDossier.Count + ".");
        }
예제 #3
0
        public override void Serialiser(Dossier dossier)
        {
            //Sauvegarde
            StreamWriter  stream     = new StreamWriter(@"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXML.db");
            XmlSerializer serializer = new XmlSerializer(typeof(Dossier));

            serializer.Serialize(stream, dossier);
            stream.Close();
            Console.WriteLine(dossier.Nom + " est serialiser dans le fichier " + @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXML.db");
            Crypter();
        }
예제 #4
0
파일: Program.cs 프로젝트: Banezi/CSharp
        static void Main(string[] args)
        {
            //Création ou Récupération de Root
            bool   fichierExist             = false;
            string fichierSerialiserXML     = @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXML.db";
            string fichierSerialiserBinaire = @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserBinaire.db";
            string typeSerialisation        = "";

            if (File.Exists(fichierSerialiserXML) || File.Exists(fichierSerialiserBinaire))
            {
                if ((File.Exists(fichierSerialiserXML) && !File.Exists(fichierSerialiserBinaire)) || (File.Exists(fichierSerialiserXML) && File.Exists(fichierSerialiserBinaire)))
                {
                    typeSerialisation = "XML";
                }
                else if (!File.Exists(fichierSerialiserXML) && File.Exists(fichierSerialiserBinaire))
                {
                    typeSerialisation = "Binaire";
                }
                //Console.WriteLine("typeSerialisation : " + typeSerialisation);
                ContactManager m = new ContactManager();
                m.FabriqueSerialisation.CreerSerialisation(typeSerialisation);
                Root         = m.FabriqueSerialisation.TypeSerialisation.DecrypterDeserialiser();
                fichierExist = true;
                if (Root == null)
                {
                    return;
                }
            }
            else
            {
                Root = new Dossier("Root");
            }

            manager = new ContactManager(Root);
            if (fichierExist)
            {
                Dossier current = manager.DossierRoot;
                while (current.ListeDossier.Count > 0)
                {
                    manager.Parent = current;
                    current        = current.ListeDossier[current.ListeDossier.Count - 1];
                }
                manager.Current = current;
            }
            //Console.WriteLine("Parent : " + manager.Parent.Nom);
            //Console.WriteLine("Current : " + manager.Current.Nom);

            //Affichage menu
            afficherMenu2();

            //Console.WriteLine("\n\nAppuyez sur entrée pour quitter!");
            //Console.ReadLine();
        }
예제 #5
0
파일: Dossier.cs 프로젝트: Banezi/CSharp
        public static Dossier recuperer()
        {
            //Chargement
            XmlSerializer deserializer = new XmlSerializer(typeof(Dossier));

            StreamReader stream            = new StreamReader(@"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXML.db");
            Dossier      _rootDeserializer = (Dossier)deserializer.Deserialize(stream);

            stream.Close();

            return(_rootDeserializer);
        }
예제 #6
0
        public override void Serialiser(Dossier dossier)
        {
            //Sauvegarde
            FileStream      mFile = new FileStream(fichierBinaireSerialiser, FileMode.Create);
            BinaryFormatter mS    = new BinaryFormatter();

            mS.Serialize(mFile, dossier);
            mFile.Close();

            Console.WriteLine(dossier.Nom + " est serialiser dans le fichier " + fichierBinaireSerialiser);
            Crypter();
        }
예제 #7
0
        public override Dossier DecrypterDeserialiser()
        {
            string     fichierCrypte = @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXMLCrypter.db";
            FileStream stream        = new FileStream(fichierCrypte, FileMode.Open, FileAccess.Read);

            DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();

            //Décryptage de la clé
            FileStream      mCleFile = new FileStream(@"cle_xml.code", FileMode.Open);
            BinaryFormatter mSC      = new BinaryFormatter();
            string          CLE      = (string)mSC.Deserialize(mCleFile);

            mCleFile.Close();


            string cle       = "";
            int    tentative = 3;

            do
            {
                Console.WriteLine("Saisir la clé de décryptage : ");
                cle = Console.ReadLine();

                if (!cle.Equals(CLE))
                {
                    Console.WriteLine("Clé erronnée, veuillez saisir une clé correcte!");
                    Console.WriteLine("Il vous reste " + --tentative + " tentatives");
                    if (tentative == 0)
                    {
                        Console.WriteLine("Vous avez épuisé le nombre de tentatives, vous n'avez pas l'autorisation d'accéder au fichier!");
                        break;
                    }
                }
            } while (!cle.Equals(CLE) && tentative != 0);

            if (!cle.Equals(CLE))
            {
                Console.WriteLine("Vous n'avez pas saisi la bonne clé de decryptage, nous n'avez pas le droit d'accéder au fichier");
                Console.WriteLine("La clé était : " + CLE);
                return(null);
            }
            cryptic.Key = ASCIIEncoding.ASCII.GetBytes(CLE);
            cryptic.IV  = ASCIIEncoding.ASCII.GetBytes(WindowsIdentity.GetCurrent().User.ToString().Substring(0, 8));

            CryptoStream crStream = new CryptoStream(stream, cryptic.CreateDecryptor(), CryptoStreamMode.Read);

            StreamReader reader = new StreamReader(crStream);

            string data = reader.ReadToEnd();

            //Affichage
            Console.WriteLine("Le fichier " + @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXMLCrypter.db a bien été décrypter !");
            //Console.WriteLine("La chaine decryptée est : " + data);

            //Déserialisation
            XmlSerializer deserializer      = new XmlSerializer(typeof(Dossier));
            StreamReader  stream2           = new StreamReader(@"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXML.db");
            Dossier       _rootDeserializer = (Dossier)deserializer.Deserialize(stream2);

            stream2.Close();
            Console.WriteLine("Le fichier " + @"C:\Users\" + Environment.UserName + @"\Documents\ContactManagerSerialiserXMLCrypter.db a bien été déserialiser !");
            _rootDeserializer.afficher(0);

            reader.Close();
            stream.Close();

            return(_rootDeserializer);
        }
예제 #8
0
 public virtual void Serialiser(Dossier dossier)
 {
 }