Posez votre question Signaler

[bash] md5 [Résolu]

Rizzen Virnn 106Messages postés 2 juillet 2007Date d'inscription - Dernière réponse le 15 janv. 2009 à 23:29
Bonjour,
Je débute en bash
Je voudrais réaliser un script qui transforme un texte entré en son équivalent crypté en md5.
Pour faire simple au début, j'essaye de faire une boucle comptant jusque 5
#!/bin/bash

cpt=0
i=5
while [ "$cpt" -lt "$i" ]
do
  echo "$cpt"
  cpt=`expr $cpt + 1`
  md5=`md5sum -b "$cpt"`
  echo "$md5"
done

Je recois ceci :
0
md5sum: 1: No such file or directory

1
md5sum: 2: No such file or directory

2
md5sum: 3: No such file or directory

3
md5sum: 4: No such file or directory

4
md5sum: 5: No such file or directory


Je suppose que c'est mon emploit de la fonction md5 qui foire mais je n'arrive pas à trouver comment faire.
Merci
Lire la suite 

[bash] md5 »

Suggestions
8 réponses
Réponse
+0
moins plus
Une question au hasard:
Les fichiers 0, 1, 2, 3 et 4 existent et sont accessibles ?
Ajouter un commentaire
Réponse
+0
moins plus
Essaie plutôt :
md5=$(echo $cpt | md5sum)
à la place de ta ligne avec l'initialisation de md5.
Sinon, md5 ce n'est pas pour chiffrer mais hacher, donc tu ne pourras pas déchiffrer ;)
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

C'est normal puisque md5sum demande en argument un fichier
Si tu fais en revanche
echo $variable | md5sum ça marche puisque le fichier lui est stdout
lami20j@debian:~/trash$ cat ccm4_md5sum.sh
#!/bin/bash

cpt=0
i=5
while [ "$cpt" -lt "$i" ]
do
  echo "$cpt"
  cpt=`expr $cpt + 1`
  md5=$(echo $cpt |md5sum -b)
  echo "$md5"
done

lami20j@debian:~/trash$ sh ccm4_md5sum.sh
0
b026324c6904b2a9cb4b88d6d61c81d1 *-
1
26ab0db90d72e28ad0ba1e22ee510510 *-
2
6d7fce9fee471194aa8b5b6e47267f03 *-
3
48a24b70a0b376535542b996af517398 *-
4
1dcca23355272056f04fe8bf20edfce0 *-
Ajouter un commentaire
Réponse
+0
moins plus
Oui pardon erreur de langage.
Merci pour le code.

Je ne travail pas sur des fichiers mais bien sur un nombre ou chaine de caractère.

Maintenant j'essaye de comparer le code trouvé à un code généré
cpt=10000
code=25a4b05ba9e28eaff3b663530947f44d
md5=$(echo $cpt | md5sum)

if [ $md5 -eq $code ]
then
  echo "cool"
fi

résultat :
 line 11: [: too many arguments


Merci
Ajouter un commentaire
Réponse
+0
moins plus
Re,
lami20j@debian:~/trash$ cat ccm5_md5sum.sh
#!/bin/bash
cpt=10000
code=b7a782741f667201b54880c925faec4b
echo $code
md5=$(echo -e "$cpt\c" | md5sum|cut -d' ' -f1)
if [ "$md5" = "$code" ]
then
  echo "cool"
fi
lami20j@debian:~/trash$ sh ccm5_md5sum.sh
b7a782741f667201b54880c925faec4b
cool
Ajouter un commentaire
Réponse
+0
moins plus
Essaie plutôt :
md5=$(echo $cpt | md5sum | cut -d' ' -f1)
if [ "$md5" = "$code" ]; then
...

le cut, permettra de ne garder que le hash et donc d'enlever le petit tiret que t'obtiens à la sortie de md5sum.
Cdlt
lami20j- 15 janv. 2009 à 23:14
Salut,

Tu as oublié le \n de echo
lami20j@debian:~/trash$ echo 10000 | md5sum | cut -d' ' -f1
154773ae5dc2d36d8b9747e5d3dbfc36
lami20j@debian:~/trash$ echo -e "10000\c" | md5sum | cut -d' ' -f1
b7a782741f667201b54880c925faec4b
lami20j@debian:~/trash$

et le script sans enlever le \n
lami20j@debian:~/trash$ cat ccm5_md5sum.sh
#!/bin/bash
cpt=10000
code=b7a782741f667201b54880c925faec4b
echo $code
#md5=$(echo -e "$cpt\c" | md5sum|cut -d' ' -f1)
md5=$(echo $cpt | md5sum | cut -d' ' -f1)
if [ "$md5" = "$code" ]
then
  echo "cool"
fi
lami20j@debian:~/trash$ sh ccm5_md5sum.sh
b7a782741f667201b54880c925faec4b
lami20j@debian:~/trash$

fiddy- 15 janv. 2009 à 23:29
Bien vu ;)
Tu as mis
sh ccm5_md5sum.sh

pour lancer ton programme alors que tu as mis un shebang. Flemme de faire un chmod ? :p
Ajouter un commentaire
Ce document intitulé « [bash] md5 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?