Meilleur auteur de réponses
mot de passe et identifiant modifiable

Question
-
Réponses
-
Donc dans Visual Studio commencer par http://msdn.microsoft.com/fr-fr/library/25zf0ze8(v=vs.80).aspx. Choisir Utilisateur comme portée et utiliser les noms IDet PWD avec par exemple "a" et "b" comme valeur. Cela permet de déclarer que l'on veut stocker ces valeurs de configuration par défaut pour chaque utilisateur.
Si ensuite dans le code on utilise :
If textboxID.text = My.Settings.ID And textboxMDP =My.Settings.PWD Then au lieu de If textboxID.text = "moi" And textboxMDP ="1234567" Then on ne pourra se connecter qu'en entrant a et b.
Ensuite sur Form3 sur le clic d'un bouton on peut faire :
My.Settings.ID=textboxID.Text
My.Settings.PWD=textboxPWD.Text
My.Settings.Savece qui enregistre les nouvelles valeurs dans le fichier. Il faudra donc maintenant entrer ces nouvelles valeurs que l'application nous laisse passer.
Une fois que ce mécanisme est maîtrisé, il sera sans doute ensuite souhaitable de crypter les identifiants et mots de passe avant de les écrire dans le fichier et de les décrypter avant utilisation pour éviter que qq puisse les voir simplement en ouvrant le fichier.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Proposé comme réponse Ciprian Duduiala lundi 11 avril 2011 07:52
- Non proposé comme réponse Haycom lundi 11 avril 2011 15:39
- Proposé comme réponse TroxsaEditor mercredi 13 avril 2011 16:28
- Marqué comme réponse Ciprian Duduiala vendredi 15 avril 2011 06:40
-
Bonjour,
J'ai fait un essai. Cela me donnerait par exemple une classe comme :
Option Strict On Imports System.Security.Cryptography Public Class Cryptographie Private algo As New TripleDESCryptoServiceProvider Private IV As Byte() = {10, 52, 156, 242, 3, 183, 217, 248} Private Key As Byte() = {28, 40, 190, 126, 76, 82, 152, 229, 128, 6, 68, 117, 128, 212, 201, 241, 218, 143, 54, 83, 83, 101, 113, 64} Public Function Encrypt(ByVal strInput As String) As String ' Décrypteur Dim enc As ICryptoTransform = algo.CreateEncryptor(Key, IV) Dim memStream As New IO.MemoryStream Dim encStream As New CryptoStream(memStream, enc, CryptoStreamMode.Write) ' Transformer la chaîne en tableau d'octets Dim bufInput As Byte() = System.Text.Encoding.Unicode.GetBytes(strInput) ' Crypter encStream.Write(bufInput, 0, bufInput.Length) ' Jusqu'à la fin encStream.FlushFinalBlock() ' Lire les données cryptées memStream.Position = 0 Dim bufOutput(CInt(memStream.Length - 1)) As Byte memStream.Read(bufOutput, 0, CInt(memStream.Length)) ' Sous forme de chaine "base64" Dim strOutput As String = Convert.ToBase64String(bufOutput) Return strOutput End Function Public Function Decrypt(ByVal strInput As String) As String Dim dec As ICryptoTransform = algo.CreateDecryptor(Key, IV) Dim memStream As New IO.MemoryStream Dim decStream As New CryptoStream(memStream, dec, CryptoStreamMode.Write) ' Convertir la chaîne base64 en tableau d'octets Dim bufInput As Byte() = Convert.FromBase64String(strInput) ' Décrypter les données decStream.Write(bufInput, 0, bufInput.Length) ' Jusqu'à la fin decStream.FlushFinalBlock() ' Lire les données décryptées memStream.Position = 0 Dim bufOutput(CInt(memStream.Length - 1)) As Byte memStream.Read(bufOutput, 0, CInt(memStream.Length)) ' Sous forme d'une chaine Unicode Dim strOutput As String = System.Text.Encoding.Unicode.GetString(bufOutput) Return strOutput End Function End Class
Qui pourrait s'utiliser de la façon suivante :
Const strInput As String = "Démo essai" Dim strOutput As String Dim str As String Dim c As New Cryptographie Debug.WriteLine(strInput) str = c.Encrypt(strInput) Debug.WriteLine(str) strOutput = c.Decrypt(str) Debug.WriteLine(strOutput)
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Proposé comme réponse TroxsaEditor mercredi 13 avril 2011 16:27
- Marqué comme réponse Ciprian Duduiala vendredi 15 avril 2011 06:40
Toutes les réponses
-
Bonjour,
J'avais vu précédemment la question mais faute de comprendre exactement ce que vous voulez je suis passé à autre chose :
- "que je pourrais modifier en étant ?". Je ne comprends pas "co" ?
- de même "protéger mon appli" est un peu vague, la protéger contre quoi ?Le degré zéro de la protection serait d'ajouter à son démarrage un formulaire demandant un nom d'utilisateur et un mot de passe (qui serait le même pour tous les utilisateurs, ou l'application utilise une base de données dans laquelle sont enregistrés les utilisateurs autorisés ?) Avez-vous essayé cette technique ?
Additionnellement, il doit être possible de vérifier de temps à autre dans l'appli que l'identification/mot de passe était bien correct et d"utiliser un outil comme http://msdn.microsoft.com/fr-fr/library/ms227240(v=vs.80).aspx pour rendre le code plus difficile à décompiler (et éviter que cette protection soit trop facile à contourner).
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
Ok, donc au lieu de comparer l'identifiant /mot de passe avec des valeurs en dur, il faut les comparer avec des variables qui seront alimentées avec l'identifiant et mot de passe actuellement choisi (peut-être les paramètres d'application http://msdn.microsoft.com/fr-fr/library/0zszyc6e(v=VS.80).aspx, voir "Paramètres" dans les propriétés du projet).
Cela donnerait par exemple qq chose comme if TextBoxID.Text=My.Settings.ID and TextBoxMDP.Text=My.Settings.MDP Then etc...
L'écran "Form3" permet de modifier et sauver ces paramètres (My.Settings.ID=NewID.Text:My.Settings.MDP=NewMDP.Text:My.Settings.Save)
Il serait sans doute souhaitable d'ajouter là dessus un cryptage de ces données pour éviter que l'identifiant/mot de passe apparaissent en clair là où il est stocké.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
Donc dans Visual Studio commencer par http://msdn.microsoft.com/fr-fr/library/25zf0ze8(v=vs.80).aspx. Choisir Utilisateur comme portée et utiliser les noms IDet PWD avec par exemple "a" et "b" comme valeur. Cela permet de déclarer que l'on veut stocker ces valeurs de configuration par défaut pour chaque utilisateur.
Si ensuite dans le code on utilise :
If textboxID.text = My.Settings.ID And textboxMDP =My.Settings.PWD Then au lieu de If textboxID.text = "moi" And textboxMDP ="1234567" Then on ne pourra se connecter qu'en entrant a et b.
Ensuite sur Form3 sur le clic d'un bouton on peut faire :
My.Settings.ID=textboxID.Text
My.Settings.PWD=textboxPWD.Text
My.Settings.Savece qui enregistre les nouvelles valeurs dans le fichier. Il faudra donc maintenant entrer ces nouvelles valeurs que l'application nous laisse passer.
Une fois que ce mécanisme est maîtrisé, il sera sans doute ensuite souhaitable de crypter les identifiants et mots de passe avant de les écrire dans le fichier et de les décrypter avant utilisation pour éviter que qq puisse les voir simplement en ouvrant le fichier.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Proposé comme réponse Ciprian Duduiala lundi 11 avril 2011 07:52
- Non proposé comme réponse Haycom lundi 11 avril 2011 15:39
- Proposé comme réponse TroxsaEditor mercredi 13 avril 2011 16:28
- Marqué comme réponse Ciprian Duduiala vendredi 15 avril 2011 06:40
-
Bonjour,
J'ai fait un essai. Cela me donnerait par exemple une classe comme :
Option Strict On Imports System.Security.Cryptography Public Class Cryptographie Private algo As New TripleDESCryptoServiceProvider Private IV As Byte() = {10, 52, 156, 242, 3, 183, 217, 248} Private Key As Byte() = {28, 40, 190, 126, 76, 82, 152, 229, 128, 6, 68, 117, 128, 212, 201, 241, 218, 143, 54, 83, 83, 101, 113, 64} Public Function Encrypt(ByVal strInput As String) As String ' Décrypteur Dim enc As ICryptoTransform = algo.CreateEncryptor(Key, IV) Dim memStream As New IO.MemoryStream Dim encStream As New CryptoStream(memStream, enc, CryptoStreamMode.Write) ' Transformer la chaîne en tableau d'octets Dim bufInput As Byte() = System.Text.Encoding.Unicode.GetBytes(strInput) ' Crypter encStream.Write(bufInput, 0, bufInput.Length) ' Jusqu'à la fin encStream.FlushFinalBlock() ' Lire les données cryptées memStream.Position = 0 Dim bufOutput(CInt(memStream.Length - 1)) As Byte memStream.Read(bufOutput, 0, CInt(memStream.Length)) ' Sous forme de chaine "base64" Dim strOutput As String = Convert.ToBase64String(bufOutput) Return strOutput End Function Public Function Decrypt(ByVal strInput As String) As String Dim dec As ICryptoTransform = algo.CreateDecryptor(Key, IV) Dim memStream As New IO.MemoryStream Dim decStream As New CryptoStream(memStream, dec, CryptoStreamMode.Write) ' Convertir la chaîne base64 en tableau d'octets Dim bufInput As Byte() = Convert.FromBase64String(strInput) ' Décrypter les données decStream.Write(bufInput, 0, bufInput.Length) ' Jusqu'à la fin decStream.FlushFinalBlock() ' Lire les données décryptées memStream.Position = 0 Dim bufOutput(CInt(memStream.Length - 1)) As Byte memStream.Read(bufOutput, 0, CInt(memStream.Length)) ' Sous forme d'une chaine Unicode Dim strOutput As String = System.Text.Encoding.Unicode.GetString(bufOutput) Return strOutput End Function End Class
Qui pourrait s'utiliser de la façon suivante :
Const strInput As String = "Démo essai" Dim strOutput As String Dim str As String Dim c As New Cryptographie Debug.WriteLine(strInput) str = c.Encrypt(strInput) Debug.WriteLine(str) strOutput = c.Decrypt(str) Debug.WriteLine(strOutput)
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".- Proposé comme réponse TroxsaEditor mercredi 13 avril 2011 16:27
- Marqué comme réponse Ciprian Duduiala vendredi 15 avril 2011 06:40
-
Bonjour, baptiste plancke,
Pouvons-nous supposer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, il serait utile de partager avec nous, afin que d'autres personnes avec le même problème peuvent profiter de cette solution.
Nous avons marqué les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !
Cordialement,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.