Question
[Résolu] Chiffrer :Echange lettres dans une string
- Roninjin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 9 ans 6 mois #22247
par Roninjin
[Résolu] Chiffrer :Echange lettres dans une string a été créé par Roninjin
Bonjour,
J'ai besoin d'un code me permettant de \"crypter\" un mot de passe via une \"matrice\" existante.
Mon code actuel :
[code:1]
$PasswordClear = 'Mlkax'
$PasswordEncrypt = $PasswordClear |ForEach-Object {
$_ -replace 'M','P'`
-replace 'l','a'`
-replace 'k','r'`
-replace 'a','i'`
-replace 'x','s'`
}
$PasswordEncrypt
[/code:1]
Le problème c'est que je voudrais que mon $PasswordEncrypt me donne Paris alors que là il me donne Piris car il remplace \"l\" par \"a\", puis \"a\" par \"i\".
Avec vous la solution ?
Merci<br><br>Message édité par: Arnaud, à: 6/09/16 09:33
J'ai besoin d'un code me permettant de \"crypter\" un mot de passe via une \"matrice\" existante.
Mon code actuel :
[code:1]
$PasswordClear = 'Mlkax'
$PasswordEncrypt = $PasswordClear |ForEach-Object {
$_ -replace 'M','P'`
-replace 'l','a'`
-replace 'k','r'`
-replace 'a','i'`
-replace 'x','s'`
}
$PasswordEncrypt
[/code:1]
Le problème c'est que je voudrais que mon $PasswordEncrypt me donne Paris alors que là il me donne Piris car il remplace \"l\" par \"a\", puis \"a\" par \"i\".
Avec vous la solution ?
Merci<br><br>Message édité par: Arnaud, à: 6/09/16 09:33
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 6 mois #22248
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Echange de lettre dans une string
Salut,
roninjin écrit:
[code:1]
$PasswordClear = 'Mlkax'
$map=@{
'M'='P'
'l'='a'
'k'='r'
'a'='i'
'x'='s'
}
$new=''
foreach ($C in [char[]]$PasswordClear) {
$new +=$map.\"$C\"
}
$new
[/code:1]
Si comme l'indique ton titre tu veux changer des lettres, il te faut manipuler des caractères et pas des chaînes.
Ici la variable $map sert de switch.<br><br>Message édité par: Laurent Dardenne, à: 1/09/16 21:01
roninjin écrit:
Une, que voici :Avec vous la solution ?
[code:1]
$PasswordClear = 'Mlkax'
$map=@{
'M'='P'
'l'='a'
'k'='r'
'a'='i'
'x'='s'
}
$new=''
foreach ($C in [char[]]$PasswordClear) {
$new +=$map.\"$C\"
}
$new
[/code:1]
Si comme l'indique ton titre tu veux changer des lettres, il te faut manipuler des caractères et pas des chaînes.
Ici la variable $map sert de switch.<br><br>Message édité par: Laurent Dardenne, à: 1/09/16 21:01
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Roninjin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 9 ans 6 mois #22249
par Roninjin
Réponse de Roninjin sur le sujet Re:Echange de lettre dans une string
Oui c’était ça le problème, le traitement caractère par caractère, merci tu me sauves !
Connexion ou Créer un compte pour participer à la conversation.
- Roninjin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 9 ans 6 mois #22250
par Roninjin
Réponse de Roninjin sur le sujet Re:Echange de lettre dans une string
En fin de compte, ça ne marche pas comme je l'esperais car quand je mets :
'A' = 'm'
'a' = 'k'
ça m'indique \"duplicate keys are not allowed in hash literals\"
Please help me !
'A' = 'm'
'a' = 'k'
ça m'indique \"duplicate keys are not allowed in hash literals\"
Please help me !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 6 mois #22251
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Echange de lettre dans une string
roninjin écrit:
tu peux remplacer la variable $map par un switch et utiliser l'opérateur -ceq sensible à la casse.
Ou utiliser une hashtable sensible à la casse, dans ce cas on la crée différemment :
[code:1]
$Map= new-object System.Collections.Hashtable
$Map.'a'='P'
$Map.'A'='p'
$Map
#Name Value
#----
#A p
#a P
[/code:1]
Oui c'est normal, PS est insensible à la casse par défaut, je pensais que ton traitement l'était.ça m'indique \"duplicate keys are not allowed in hash literals\"
tu peux remplacer la variable $map par un switch et utiliser l'opérateur -ceq sensible à la casse.
Ou utiliser une hashtable sensible à la casse, dans ce cas on la crée différemment :
[code:1]
$Map= new-object System.Collections.Hashtable
$Map.'a'='P'
$Map.'A'='p'
$Map
#Name Value
#----
#A p
#a P
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 9 ans 6 mois #22252
par Philippe
Réponse de Philippe sur le sujet Re:Echange de lettre dans une string
salut a vous deux 
comme d'habitude les solutions pour un faire un travail en PS sont multiple
pour reprendre ton script d'origine :
[code:1]$PasswordClear = 'Mlkax'
$PasswordEncrypt = $PasswordClear |ForEach-Object {
$_ -creplace 'M','P'`
-creplace 'k','r'`
-creplace 'a','i'`
-creplace 'l','a'`
-creplace 'x','s'`
}
$PasswordEncrypt[/code:1]
tu remarque je n'est que changé l'ordre des remplace mais aussi forcé la sensibilité à la case du \"replace\"
comme d'habitude les solutions pour un faire un travail en PS sont multiple
pour reprendre ton script d'origine :
[code:1]$PasswordClear = 'Mlkax'
$PasswordEncrypt = $PasswordClear |ForEach-Object {
$_ -creplace 'M','P'`
-creplace 'k','r'`
-creplace 'a','i'`
-creplace 'l','a'`
-creplace 'x','s'`
}
$PasswordEncrypt[/code:1]
tu remarque je n'est que changé l'ordre des remplace mais aussi forcé la sensibilité à la case du \"replace\"
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.106 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Chiffrer :Echange lettres dans une string