Système de connexion textuel avec enregistrement des utilisateurs et hachage simple en Kotlin

Application console Kotlin pour l’enregistrement et la connexion des utilisateurs avec hachage simple des mots de passe, démonstration pédagogique sécurisée.

Brève Introduction

Système de connexion textuel avec enregistrement des utilisateurs et hachage simple en Kotlin (kotlin)
DESCRIPTION :
Une application console en Kotlin qui permet l'enregistrement et la connexion des utilisateurs avec une fonction de hachage simple pour le mot de passe. Le système stocke les utilisateurs en mémoire et permet de s'authentifier en vérifiant le mot de passe haché.

NOTES SUPPLÉMENTAIRES :
Cet exemple est pédagogique et utilise un hachage très simple et non sécurisé à des fins de démonstration. Dans les applications réelles, il faut utiliser des algorithmes de hachage robustes comme bcrypt ou Argon2 et stocker les données dans une base de données sécurisée.

EXPLICATIONS :
- La fonction hashPassword convertit le mot de passe en une valeur numérique en sommant les codes ASCII des caractères et retourne une chaîne.
- La classe User contient le nom d'utilisateur et le mot de passe haché pour éviter de stocker le mot de passe en clair.
- UserManager maintient une carte en mémoire des utilisateurs enregistrés et fournit des méthodes pour enregistrer et authentifier.
- La boucle principale permet à l'utilisateur de choisir de s'enregistrer, de se connecter ou de quitter, en gérant l'interaction via la console.

Code d'Exemple : kotlin

// Système de connexion textuel avec enregistrement des utilisateurs et hachage simple

// Classe représentant un utilisateur avec nom d'utilisateur et mot de passe haché
class User(val username: String, val passwordHash: String)

// Objet gérant l'enregistrement et l'authentification des utilisateurs
object UserManager {
    // Carte stockant les utilisateurs enregistrés : nom d'utilisateur -> User
    private val users = mutableMapOf<String, User>()

    // Fonction pour enregistrer un nouvel utilisateur
    // Retourne true si l'enregistrement réussit, false si l'utilisateur existe déjà
    fun register(username: String, password: String): Boolean {
        if (users.containsKey(username)) {
            return false // Utilisateur déjà existant
        }
        val hash = hashPassword(password)
        val user = User(username, hash)
        users[username] = user
        return true
    }

    // Fonction pour authentifier un utilisateur
    // Retourne true si le nom d'utilisateur et le mot de passe correspondent
    fun login(username: String, password: String): Boolean {
        val user = users[username] ?: return false
        val hash = hashPassword(password)
        return user.passwordHash == hash
    }

    // Fonction de hachage simple : somme des codes ASCII des caractères
    // Note : NON sécurisé pour un usage réel, démonstration uniquement
    private fun hashPassword(password: String): String {
        val sum = password.toCharArray().sumOf { it.code }
        return sum.toString()
    }
}

// Fonction principale avec interface textuelle
fun main() {
    println("Bienvenue dans le système de connexion")
    while (true) {
        println("\nChoisissez une option :")
        println("1 - S'enregistrer")
        println("2 - Se connecter")
        println("3 - Quitter")
        print("Entrez votre choix : ")
        val choice = readLine()

        when (choice) {
            "1" -> {
                print("Entrez le nom d'utilisateur : ")
                val username = readLine()?.trim() ?: ""
                print("Entrez le mot de passe : ")
                val password = readLine() ?: ""

                if (username.isEmpty() || password.isEmpty()) {
                    println("Le nom d'utilisateur et le mot de passe ne peuvent pas être vides.")
                    continue
                }

                val success = UserManager.register(username, password)
                if (success) {
                    println("Enregistrement réussi pour l'utilisateur '$username'.")
                } else {
                    println("Erreur : l'utilisateur '$username' existe déjà.")
                }
            }
            "2" -> {
                print("Entrez le nom d'utilisateur : ")
                val username = readLine()?.trim() ?: ""
                print("Entrez le mot de passe : ")
                val password = readLine() ?: ""

                val success = UserManager.login(username, password)
                if (success) {
                    println("Connexion réussie. Bienvenue, $username !")
                } else {
                    println("Échec de la connexion : nom d'utilisateur ou mot de passe incorrect.")
                }
            }
            "3" -> {
                println("Sortie du programme. Au revoir !")
                break
            }
            else -> {
                println("Choix invalide, veuillez réessayer.")
            }
        }
    }
}
×
×
×
Veux-tu régénérer la réponse ?
×
Exporter le chat
Choisissez le format d'export
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Vous êtes sur le point de fermer le chat et de passer au générateur d’images. Si vous n’êtes pas connecté, vous perdrez notre conversation. Confirmez-vous ?
👁 Tu consultes une discussion partagée en mode temporaire. Elle ne sera pas enregistrée.
💬
×
Prompts enregistrés
×
Note privée
×
Étiquette
×
Rechercher dans toutes les discussions
×
Vos insights
Analyse en cours…
×
Préférences IA
Nom de l'assistant 30
Longueur des réponses
Modèle IA
Réponses structurées
Inclure des exemples
Utiliser des emojis
Guide-moi, ne résous pas Des indices et des questions plutôt que la réponse toute faite
Plus de réglages →
×
Partager cette discussion
Toute personne ouvrant ce lien pourra consulter la discussion ou l'ajouter à son profil comme discussion personnelle.
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
Discussion partagée
Quelqu'un a partagé une discussion avec toi. Veux-tu seulement la consulter ou l'ajouter à tes discussions ?
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
×

📌 Messages enregistrés

Chargement...

×

Historique des discussions

programmes-exemples · HISTORIQUE DU CHAT

Chargement...

Préférences IA

×
  • 🟢 BasiqueRéponses rapides et essentielles pour étudier
  • 🔵 MoyenQualité supérieure pour étude et programmation
  • 🟣 AvancéRaisonnement complexe et analyses détaillées
Expliquer les étapes

Qu'est-ce qu'il faut ?

Logiciel :
  • Bibliothèque standard Kotlin
  • Aucune dépendance externe requise
  • Environnement d'exécution : JVM (Java Virtual Machine)
Configuration :
  • Aucune configuration externe requise
Matériel :
  • Aucun matériel spécifique requis (application console)
Structure du code :
  • Classe User : représente un utilisateur avec nom d'utilisateur et mot de passe haché
  • Objet UserManager : gère l'enregistrement et l'authentification des utilisateurs
  • Fonction hashPassword : hachage simple par somme des codes des caractères
  • Fonction main : interface textuelle pour l'enregistrement et la connexion

Sujets Similaires

Impression d’une liste de noms avec une boucle for en Kotlin
Exemple simple en Kotlin montrant comment imprimer une liste de noms avec une boucle for, idéal pour débutants en programmation Kotlin.
Menu textuel simple avec when en Kotlin
Exemple simple de menu textuel en Kotlin utilisant when pour gérer les choix utilisateur avec lecture console et boucle while pédagogique.
Concaténation de chaînes avec les templates Kotlin
Exemple simple de concaténation de chaînes en Kotlin utilisant les templates pour insérer des variables de manière lisible et efficace dans les chaînes.
Table de multiplication de 5 imprimée avec une boucle while en Kotlin
Programme Kotlin simple imprimant la table de multiplication de 5 avec une boucle while pour apprendre les bases des boucles et l’affichage console.
Somme des éléments d’un tableau d’entiers en Kotlin
Exemple simple en Kotlin pour calculer la somme des éléments d’un tableau d’entiers avec boucle for et affichage du résultat.
Impression des nombres de 1 à 1 en Kotlin
Exemple simple en Kotlin affichant les nombres de 1 à 1 avec une boucle for, idéal pour débutants souhaitant apprendre la syntaxe et l’affichage console.
Simulation de lancer de dé avec des nombres aléatoires en Kotlin
Simulation de lancer de dé en Kotlin avec génération de nombres aléatoires entre 1 et 6, idéal pour débutants souhaitant apprendre Kotlin facilement.
Mini carnet d’adresses en mémoire avec liste de contacts en Kotlin
Programme Kotlin simple pour gérer un carnet d’adresses en mémoire avec ajout, affichage et recherche de contacts sans base de données ni fichiers.