olidebug
Messages postés6Date d'inscriptionmardi 14 août 2018StatutMembreDernière intervention29 septembre 2018
-
Modifié le 28 sept. 2018 à 11:26
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023
-
29 sept. 2018 à 19:49
Bonjour, (je suis debutant....)
j'ai fait un generateur de mot de passe en c#
Après la création d'un fichier text avec des données et des caractère Héxadecimal uniquement exemple :
019AA660B68D27
02E7A661EF4A07
E355FEDE6893BB
Je veux suprimer les lignes, enlever l'espace apres supression de mon fichier text (SerialNum.txt) contenant plusieurs caractère identique avec un bouton pour contrôler le fichier avant de l'ouvrir :
exemple :
019AA6AABBB27
02E77777EF4A07
E355FEDEEEEEBB
J'ai testé pas mal de codage et rien ne fonctionne. (Suppression de ligne, contrôle des caractère ect ...)
Merci de votre aide.
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 28 sept. 2018 à 13:13
Bonjour
Plusieurs caractères indentiques consécutifs ou dans tous le mot de passe?
olidebug
Messages postés6Date d'inscriptionmardi 14 août 2018StatutMembreDernière intervention29 septembre 2018 28 sept. 2018 à 14:13
Bonjour, merci de prendre du temps pour moi.
j'ai du mal m'exprimer, je debute en c# et sur le forum aussi :
-c'est pour Plusieurs caractères indentiques dans une même ligne.
et contrôler tout les mots de passes qui auront été générés dans le fichier (SerialNum.txt, qui exeste déjà ... )
Il faut que je puisse contrôler le ficher txt qui aura été crée avant de l'ouvrir.
Eliminer les lignes :
0101010101010 (plusieurs 0 et 1 ligne à suprimer le vide qu'elle laisse)
...X ligne
001A1A1A1A1A (plusieurs 1 et A ligne à suprime le vide qu'elle laisser)
...X ligne
0C28DE68C6F0A (on conserve)
...X ligne
0C281E60C9F0A (on conserve )
...X ligne
EEEEAAAA45555 (plusieurs E, A et 5 ligne à suprimer le vide qu'elle laisse)
...X lignes
0E454EFFE75E0E (plusieurs E ligne à suprimer le vide qu'elle laisse)
Mon but et d'autoriser maximum de 3, 4, 5 chiffre ou lettre identique dans le mot de passe.
Le top serais que ca ma donne en meme temp le nombre total de ligne contenues dans le fichier TXT !
Mais ca, je verrais après...
Bonne après midi.
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 28 sept. 2018 à 17:39
C'est parfaitement possible avec une regex.
Cependant, ça n'est pas optimisé.
Admettons que tu doives générer 100 mots de passe.
T'en fais donc 100.
Ensuite tu les relis tous et tu en vires 38.
Tu en refais 38.
Tu les relis tous et tu en vires 7.
etc...
Bref autant générer tout de suite un mot de au bon format.
Voila deux principes pour un mot de passe "sans doublon":
1
Tu crées une collection de départ, avec chaque valeur possible (si tu autorises deux 'A' alors il sera présent deux fois dans la collection).
Tu "tires" aléatoirement un index.
Tu enlèves l'item situé à l'index en question et tu le mets dans la collection résultat.
Et ainsi de suite.
2
Tu crées la même collection de départ.
Tu la mélanges
Tu prends les n premiers items de la collection mélangée.
Et le code du principe 2
private string GenereMDP()
{
List<char> liste = new List<char> { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };//collection de départ
IEnumerable<char> melange = liste.OrderBy(x => new Guid());//melange la liste en fonction d'un truc complétement aléatoire le GUID
return string.Join("", melange.Take(12));//construit et retourne un string en joignant les 12 premiers éléments de melange avec "" comme séparateur.
}
olidebug
Messages postés6Date d'inscriptionmardi 14 août 2018StatutMembreDernière intervention29 septembre 2018 Modifié le 28 sept. 2018 à 19:12
Bonsoir,
Je ne peu pas faire de l'aléatoire. Sinon j'aurais fait ca :
private string lettermdp = "0123456789ABCDEF";
private void button15_Click(object sender, EventArgs e)
{
Random random = new Random();
for (int index = 0; index < 14; ++index)
{
TextBox textBox = textBox3;
string str = textBox.Text + (object)lettermdp[random.Next(0, lettermdp.Length)];
textBox.Text = str;
}
}
il faut que les mdp ce suivent dans l'ordre ....Et c'est pour cela que j'ai demandé de l'aide ... car je dois partir sur des fichier existant, généré avec une suite incrémentiel ...
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 Modifié le 28 sept. 2018 à 18:28
Et le code, que tu montres, génère de aléatoire avec doublon, or tu ne veux pas de doublon, c'est pourquoi je t'ai expliqué 2 façons de faire sans doublon.
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 28 sept. 2018 à 18:36
Ha si tu modifies après que j'ai répondu, on va pas y arriver.
Donc dans ton premier message:
j'ai fait un generateur de mot de passe en c#
, le mot important c'est "J'".
Dans ta dernière modification,
car je dois partir sur des fichier existant
Si c'est toi qui a fait le générateur de mot de passe et qu'après tu fais un correcteur du résultat du générateur, ça manque de logique.
C'est pourquoi, je t'ai proposé une autre approche.
Maintenant si on te fournit un fichier et que tu dois le traiter:
1 commence par ne pas dire "J'", ça évitera les méprises.
2 ça ne t'empêche pas d'expliquer à ton demandeur que ça n'est pas optimisé, et que peut-être il serait plus efficient de modifier le générateur.
3 si on reste dans l'idée de corriger le résultat du générateur, c'est pas un problème pour moi, cependant essaye de bien expliquer les choses, de ne pas être incohérent
olidebug
Messages postés6Date d'inscriptionmardi 14 août 2018StatutMembreDernière intervention29 septembre 2018 28 sept. 2018 à 19:46
oui, j'ai fait le générateur. Je fais le tri manuellement une fois les fichiers creer et je ne veux plus le faire, c'est trop long. J'ai des fichiers existant et je ne vais pas les refaire ... Ca demande trop de temps.
capturer les codes valides (la regex est plus compliquée à faire) et réecrire le fichier texte avec.
olidebug
Messages postés6Date d'inscriptionmardi 14 août 2018StatutMembreDernière intervention29 septembre 2018 29 sept. 2018 à 19:29
Merci, comme j'ai environ 48038396025285290 ligne a contôler, je prefère automatiser la chose ...
Whismeril
Messages postés18417Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 5 juin 2023624 29 sept. 2018 à 19:49
Je dois vraiment mal m'exprimer.
Bien sûr que le contrôle automatisé est extrêmement plus rapide que de le faire manuellement. C'est pas ce que j'ai dit.
Ce que j'ai dit, c'est
développement d'un générateur
+ la génération de codes, qui au final ne sont pas tous bons
+ développement d'un contrôleur automatisé
+ contrôle
est bien plus long, que de bien faire les choses dès le départ.
28 sept. 2018 à 14:13
j'ai du mal m'exprimer, je debute en c# et sur le forum aussi :
-c'est pour Plusieurs caractères indentiques dans une même ligne.
et contrôler tout les mots de passes qui auront été générés dans le fichier (SerialNum.txt, qui exeste déjà ... )
Il faut que je puisse contrôler le ficher txt qui aura été crée avant de l'ouvrir.
Eliminer les lignes :
0101010101010 (plusieurs 0 et 1 ligne à suprimer le vide qu'elle laisse)
...X ligne
001A1A1A1A1A (plusieurs 1 et A ligne à suprime le vide qu'elle laisser)
...X ligne
0C28DE68C6F0A (on conserve)
...X ligne
0C281E60C9F0A (on conserve )
...X ligne
EEEEAAAA45555 (plusieurs E, A et 5 ligne à suprimer le vide qu'elle laisse)
...X lignes
0E454EFFE75E0E (plusieurs E ligne à suprimer le vide qu'elle laisse)
Mon but et d'autoriser maximum de 3, 4, 5 chiffre ou lettre identique dans le mot de passe.
Le top serais que ca ma donne en meme temp le nombre total de ligne contenues dans le fichier TXT !
Mais ca, je verrais après...
Bonne après midi.