Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chiffrer une chaîne de caractère

Recherche comment chiffrer une chaine de caractère - Débutant

Sujet résolu
    19 janvier 2021 à 18:35:00

    Bonjour,

    J'ai débuté le langage Java et j'ai créé une application de gestion de profil avec une DB sous forme de fichier .csv


    Mais j'aimerais sécurisé l'accès au programme avec un mot de passe

    Mon but est de recevoir comme paramètre en entrée du programme le user et le MDP. Ex : 

    java *.class user MDP

    J'ai déjà fais une méthode pour gérerla confirmation du mot de passe et elle fonctionne. Elle s'occupe de stocké et lire les mots de passe du fichier profils.csv

    Les mots de passes sont stocké sous la forme : user;MDP

    Ex:

    titi;toto

    tata;tutu

    ...

    Ce que je voudrais c'est sécuriser le fichier profils.csv pour empêcher les personnes de trouver facilement ces identifiants.

    Je suis débutant en Java et donc je ne voudrais une solution que je comprenne --> pas trop complexe.

    Connection.java :

    import java.io.File;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Connexion {
        public static void creationFichierMDP() {
            File dossier = new File("user");
            if (!dossier.exists()) {
                if (dossier.mkdir())
                    Log.log("Création du dossier \"user\"");
                else
                    Log.log("Erreur à la création du dossier \"users\"");
            }
    
            try {
                File fichier = new File("user/profils.csv");
                if (!fichier.exists()) {
                    if (fichier.createNewFile())
                        Log.log("Création du fichier \"profils.csv\"");
                }
            } catch (IOException e) {
                Log.log("Erreur à la création du fichier \"profils.csv\"");
                e.printStackTrace();
                System.exit(2);
            }
        }
    
        public static String gestionMDP(String user) {
            try {
                Connexion.creationFichierMDP();
                File fichierMDP = new File("user/profils.csv");
                Scanner fichierLecture = new Scanner(fichierMDP);
    
                String fichierMDPLocal = fichierLecture.nextLine();
                while (fichierLecture.hasNextLine()) {
                    fichierMDPLocal = fichierMDPLocal + ";" + fichierLecture.nextLine();
                }
    
                String[] parts = fichierMDPLocal.split(";");
    
                int index = -1;
                for (int i = 0; i < parts.length; i++)
                    if (parts[i].equals(user)) {
                        index = i;
                    }
    
                if (index == -1)
                    return "";
                return parts[index+1];
    
            } catch (IOException e) {
                Log.log("Lecture du fichier \"user/profils.csv\" impossible");
                e.printStackTrace();
                System.exit(6);
            }
            return "";
        }
    }


    Main.java

    package com.company;
    
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Log.log("--------------------------");
            Log.log("Lancement de l'application");
    
            if (args.length != 0  && Connexion.gestionMDP(args[0]).equals(args[1])) {
                Log.log("Accès autorisé");
    
                final int maxDeProfil = 10;
                Profil[] personnes = new Profil[maxDeProfil + 1];
    
                BackupProfil.scannerFichierEnregistrerProfils(personnes);
    
                do {
                    int choix = menu();
                    if (choix == 1 && Profil.getNbProfil() < (maxDeProfil + 1)) {
                        BackupProfil.demandeInformationProfil(personnes, maxDeProfil + 1);
                    } else if (choix == 1) {
                        System.out.println("Vous avez déja le max de profils");
                        Log.log("Impossible de créé le profil : Nombre maximum de profils atteint");
                    }
                } while (true);
            }else {
                Log.log("Accès refusé");
                System.out.println("Accès refusé");
            }
        }
    
        public static int menu() {
            Scanner input = new Scanner(System.in);
            int choix = 1;
    
            do {
                System.out.println("Que voulez-vous faire ?");
                System.out.println("1. Ajouter un profil");
                choix = input.nextInt();
            } while (choix < 1 || choix > 100);
            return choix;
        }
    }
    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2021 à 18:55:25

      Pour un mot de passe l'idéal est hash + salt, non reversible donc.

      BCrypt ou Argon2 sont de bons algos de hashing solides.

      -
      Edité par P.X.L 19 janvier 2021 à 18:55:37

      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2021 à 19:24:31

        Je n'ai jamais utiliser d'algorithmes de hashing

        Serait-il possible de m'expliquer comment l'intégrer à java ?

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2021 à 19:59:04

          Soit tu utilises un MessageDigest de l'API java, soit tu passes par une lib externe.

          • Partager sur Facebook
          • Partager sur Twitter
            19 janvier 2021 à 20:14:56

            C'est quoi un MessageDigest ?
            • Partager sur Facebook
            • Partager sur Twitter
              19 janvier 2021 à 21:27:29

              Je viens de regarder mais MessageDigest cripte à sens unique si je comprends hors il me faut également décripter le MDP après
              • Partager sur Facebook
              • Partager sur Twitter
                19 janvier 2021 à 22:20:59

                Pourquoi veux tu les déchiffrer? Si tu le peux alors la sécurité des mots de passe n'est pas garantie.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 janvier 2021 à 7:30:06

                  C'est vrai que j'ai pas besoin de le déchiffrer, j'y avais pas pensé

                  Merci

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Chiffrer une chaîne de caractère

                  × 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