From 5a1949aca1718e85ce51cf4592b44bd188f365cd Mon Sep 17 00:00:00 2001 From: beaulaton Date: Mon, 17 Feb 2025 16:44:06 +0100 Subject: [PATCH] Hashage mdp --- .../what_the_fantasy/data/local/UserStub.kt | 40 +++++++++++++------ .../what_the_fantasy/ui/screens/LoginPage.kt | 21 ++++++++-- .../what_the_fantasy/ui/screens/SignUpPage.kt | 11 +---- What_The_Fantasy/gradle/libs.versions.toml | 9 ++--- 4 files changed, 52 insertions(+), 29 deletions(-) diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt index 48a3f0e..5bc2351 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/data/local/UserStub.kt @@ -9,73 +9,89 @@ object UserStub { email = "aragorn@example.com", date = "2022-01-15", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-fantaisie_1045-185.jpg?size=338&ext=jpg", - password = "password123" - ) + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user2 = User( id = 2, username = "Legolas456", email = "legolas@example.com", date = "2021-05-23", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-fantaisie_1045-186.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user3 = User( id = 3, username = "Gandalf789", email = "gandalf@example.com", date = "2020-09-10", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-fantaisie_1045-187.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user4 = User( id = 4, username = "FrodoBaggins", email = "frodo@example.com", date = "2023-03-18", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-hobbit-fantaisie_1045-188.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user5 = User( id = 5, username = "Gimli999", email = "gimli@example.com", date = "2022-07-04", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-nain-fantaisie_1045-189.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user6 = User( id = 6, username = "Galadriel321", email = "galadriel@example.com", date = "2021-11-30", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-elfe-femme-fantaisie_1045-190.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user7 = User( id = 7, username = "Boromir654", email = "boromir@example.com", date = "2023-06-22", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-191.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user8 = User( id = 8, username = "Eowyn777", email = "eowyn@example.com", date = "2022-04-11", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerriere-femme-fantaisie_1045-192.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user9 = User( id = 9, username = "Saruman888", email = "saruman@example.com", date = "2021-08-15", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-magicien-malefique-fantaisie_1045-193.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + val user10 = User( id = 10, username = "Faramir222", email = "faramir@example.com", date = "2023-02-08", imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", - password = "password123") + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 + + val user11 = User( + id = 10, + username = "testeur", + email = "testeur@example.com", + date = "2023-02-08", + imgUrl = "https://img.freepik.com/vecteurs-libre/personnage-guerrier-homme-fantaisie_1045-194.jpg?size=338&ext=jpg", + password = "03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4") // 1234 val allUsers: List = listOf( - user1, user2, user3, user4, user5, user6, user7, user8, user9, user10 + user1, user2, user3, user4, user5, user6, user7, user8, user9, user10, user11 ) } \ No newline at end of file diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt index 9f94e86..fc883f4 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/LoginPage.kt @@ -2,6 +2,7 @@ package com.example.what_the_fantasy.ui.screens import android.os.Bundle import android.text.style.BackgroundColorSpan +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge @@ -51,6 +52,8 @@ import androidx.navigation.compose.composable import com.example.what_the_fantasy.R import com.example.what_the_fantasy.data.local.UserStub import com.example.what_the_fantasy.data.model.User +import org.mindrot.jbcrypt.BCrypt +import java.security.MessageDigest @Composable fun LoginPage(navController : NavController) { @@ -85,7 +88,6 @@ fun LoginPage(navController : NavController) { ConnexionButtonLogin(users,identifiant, passwd, R.string.ButtonLogin,18, Color.White, Color.Black,navController) Space(16) CreateAccountButton(R.string.ButtonCreateLogin,12, Color.White, navController) - } } } @@ -136,7 +138,7 @@ fun PassWdTextField(textpasswdResId : Int) : String{ IconButton(onClick = { passwordVisible = !passwordVisible }) { } }, - shape = RoundedCornerShape(16.dp) // 🔹 Bords arrondis + shape = RoundedCornerShape(16.dp) // Bords arrondis ) } return passwd; @@ -169,13 +171,26 @@ fun ConnexionButtonLogin(userStub : List, id : String, passwd : String, ti fun validLogin(identifiant : String, passwd : String, users : List, navController: NavController){ users.forEach { user -> - if (user.username == identifiant && user.password == passwd){ + val hashPassWd = hashPassword(passwd) + + if (user.username == identifiant && user.password == hashPassWd){ navController.navigate("profile") //navController.navigate(ProfilPage(navController)) } } } +fun hashPassword(password: String): String { + // Créer un objet MessageDigest pour SHA-256 + val digest = MessageDigest.getInstance("SHA-256") + + // Convertir le mot de passe en bytes et appliquer le hash + val hashedBytes = digest.digest(password.toByteArray()) + + // Convertir le tableau de bytes en une chaîne hexadécimale + return hashedBytes.joinToString("") { "%02x".format(it) } +} + @Composable fun CreateAccountButton(titleResId : Int, size : Int, color : Color, navController: NavController){ diff --git a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt index 7ed5121..5f87056 100644 --- a/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt +++ b/What_The_Fantasy/app/src/main/java/com/example/what_the_fantasy/ui/screens/SignUpPage.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.example.what_the_fantasy.R import com.example.what_the_fantasy.ui.theme.What_The_FantasyTheme +import org.mindrot.jbcrypt.BCrypt @Composable fun SignUpPage(navController: NavController) { @@ -172,15 +173,7 @@ fun PassWdConfirmTextFieldSign(textpasswdResId : Int){ } } -//@Composable -//fun TitleSign(title : String, size : Int, color : Color){ -// Text( -// text = title, -// fontSize = size.sp, -// fontWeight = FontWeight.Bold, -// color = color -// ) -//} + @Composable fun ConnexionButtonSign(titleResId : Int, size : Int, colorButton : Color, colorText : Color){ diff --git a/What_The_Fantasy/gradle/libs.versions.toml b/What_The_Fantasy/gradle/libs.versions.toml index ae80aff..258393f 100644 --- a/What_The_Fantasy/gradle/libs.versions.toml +++ b/What_The_Fantasy/gradle/libs.versions.toml @@ -1,8 +1,8 @@ [versions] agp = "8.6.0" -bcrypt = "2.2.0" +bcrypt = "0.4" coilCompose = "2.2.1" -coilComposeVersion = "3.1.0" + kotlin = "1.9.0" coreKtx = "1.10.1" junit = "4.13.2" @@ -16,10 +16,9 @@ navigationCommonAndroid = "2.9.0-alpha05" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } -bcrypt = { module = "de.nycode:bcrypt", version.ref = "bcrypt" } +bcrypt = { module = "org.mindrot:jbcrypt", version.ref = "bcrypt" } coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" } -coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coilComposeVersion" } -coil3-coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilComposeVersion" } + junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }