[bash] md5

Résolu/Fermé
Rizzen Virnn Messages postés 103 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 14 novembre 2009 - 15 janv. 2009 à 22:19
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 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
A voir également:

6 réponses

Une question au hasard:
Les fichiers 0, 1, 2, 3 et 4 existent et sont accessibles ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 janv. 2009 à 22:32
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 ;)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
15 janv. 2009 à 22:36
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 *-
0
Rizzen Virnn Messages postés 103 Date d'inscription lundi 2 juillet 2007 Statut Membre Dernière intervention 14 novembre 2009 7
15 janv. 2009 à 22:49
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
15 janv. 2009 à 23:08
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
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 janv. 2009 à 23:10
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
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
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$

0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
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
0