cerhu > comp.os.* > comp.os.unix

Olivier Miakinen (25/01/2019, 02h13)
Bonjour,

Dans un script shell (vraisemblablement bash), je vais avoir le
besoin suivant.

À partir d'une chaîne de caractères à peu près quelconques (choisis
quand même dans les caractères ASCII imprimables, donc de code ASCII
compris entre 32 et 126), et de longueur quelconque, je voudrais
obtenir une chaîne de longueur fixe ne comportant que des chiffres
ou des lettres.

Je n'ai aucun besoin d'une sécurité forte, donc un hachage de type
sha1sum ou md5sum me conviendrait parfaitement (mais il peut exister
quelque chose de plus simple auquel je n'aurais pas pensé, ne pas
hésiter à me faire d'autres propositions).

la chaîne de caractères de départ est dans une variable (mettons
par exemple $input) et je voudrais obtenir le résultat dans une
autre variable (par exemple $output).

Pour le moment, le code le moins complexe que j'ai trouvé est le
suivant :
##########################################
input='This is an "example" #@<>'

tmp=$(md5sum << blablabla
$input
blablabla
)

output=$(sed 's/ *-//' << blablabla
$tmp
blablabla
)

echo $output
##########################################

.... qui donne comme résultat :
e3fd21b3c4ac587892b8cd0693507adc

Est-ce que je pourrais faire mieux ou plus simple ?

Cordialement,
Pascal J. Bourguignon (25/01/2019, 02h24)
Olivier Miakinen <om+news> writes:

[..]
> blablabla
> )
> echo $output
> ##########################################
> ... qui donne comme résultat :
> e3fd21b3c4ac587892b8cd0693507adc
> Est-ce que je pourrais faire mieux ou plus simple ?


Simplement, utilise une des commandes sha*sum au lieu de md5sum.

for input in "Hello world" "Hello World" ; do
sum=$(echo -n "$input"|sha256sum|sed -e 's/ *-//')
printf "%s %s\n" "$sum" "$input"
done
Olivier Miakinen (25/01/2019, 02h36)
Bonjour Pascal,

Quelle rapidité ! Je ne m'attendais pas à avoir une réponse si vite !

Le 25/01/2019 01:24, Pascal J. Bourguignon a écrit :
> Simplement, utilise une des commandes sha*sum au lieu de md5sum.


Ça, peu importe. Comme je le disais, il n'y a aucun enjeu de sécurité.
Cela dit, ok, je veux bien utiliser sha256sum. Mais surtout :

> for input in "Hello world" "Hello World" ; do
> sum=$(echo -n "$input"|sha256sum|sed -e 's/ *-//')


Mais oui, bien sûr ! Pourquoi j'allais m'embêter avec des « << » ?
Un grand merci pour cette syntaxe beaucoup plus simple.

> printf "%s %s\n" "$sum" "$input"
> done


Eh bien voilà, problème résolu. Merci !
Nicolas George (25/01/2019, 09h34)
Olivier Miakinen , dans le message <q2dlln$18ap$1>,
a écrit :
>> sum=$(echo -n "$input"|sha256sum|sed -e 's/ *-//')

> Mais oui, bien sûr ! Pourquoi j'allais m'embêter avec des « << » ?


Pour éviter une commande supplémentaire. Attention, echo est peu
standardisé, préférer printf.
Olivier Miakinen (25/01/2019, 10h16)
Le 25/01/2019 08:34, Nicolas George a écrit :
>>> sum=$(echo -n "$input"|sha256sum|sed -e 's/ *-//')

>> Mais oui, bien sûr ! Pourquoi j'allais m'embêter avec des « << » ?

> Pour éviter une commande supplémentaire.


Certes, mais au prix de la longueur du code et d'une moindre lisibilité.

> Attention, echo est peu standardisé, préférer printf.


En effet, il faut vraiment que je m'y habitue.

Donc :
sum=$(printf "%s" "$input"|sha256sum|sed -e 's/ *-//')

Ou, puisque ça ne fait pas de différence à partir du moment où je fais
partout pareil :
sum=$(printf "%s\n" "$input"|sha256sum|sed -e 's/ *-//')
Nicolas George (25/01/2019, 17h24)
Olivier Miakinen , dans le message <q2egl8$1fv6$1>,
a écrit :
> Ou, puisque ça ne fait pas de différence à partir du moment où je fais
> partout pareil :


Un petit peu quand même dans la mesure où SHA-256 est standardisé,
savoir exactement sur quoi on le calcule est intéressant.

> sum=$(printf "%s\n" "$input"|


Je déconseille les backslashes seuls dans des guillemets doubles :
« "%s\\n" ».

> sha256sum|sed -e 's/ *-//')


Note : « cut -c 1-64 » sera un substitut intéressant à sed.
Olivier Miakinen (25/01/2019, 21h20)
Le 25/01/2019 16:24, Nicolas George a écrit :
>> Ou, puisque ça ne fait pas de différence à partir du moment où je fais
>> partout pareil :

> Un petit peu quand même dans la mesure où SHA-256 est standardisé,
> savoir exactement sur quoi on le calcule est intéressant.


Je n'ai pas encore expliqué à quoi ce script devait servir, mais je
t'assure qu'on s'en fout : il suffit que si on lance le script deux
fois dans la même journée, sur la même chaîne, et sur la même machine,
ça retourne la même valeur (et si possible des valeurs différentes
en partant de chaînes différentes).

Si cela t'intéresse de comprendre le contexte, va voir la discussion
« Just a test :) » sur fr.test (oui, je sais, en principe ce n'est
pas un groupe pour discuter, mais là ça se justifie).

>> sum=$(printf "%s\n" "$input"|

> Je déconseille les backslashes seuls dans des guillemets doubles :
> « "%s\\n" ».


Exact. Bon, j'ai mis ceinture et bretelles : des guillemets simples
et plus aucun backslash, à savoir '%s'.

>> sha256sum|sed -e 's/ *-//')

> Note : « cut -c 1-64 » sera un substitut intéressant à sed.


Adopté.

Cordialement,
lindamarcel (24/05/2019, 16h52)
Le vendredi 25 Janvier 2019 à 01:13 par Olivier Miakinen :
[..]
> ##########################################
> ... qui donne comme résultat :
> e3fd21b3c4ac587892b8cd0693507adc
> Est-ce que je pourrais faire mieux ou plus simple ?
> Cordialement,
> --
> Olivier Miakinen

Excusez moi pour le dérangement mais je viens très humblement vous demander qu
si quelqu'un connait Mme Amandine Poire de m'aider à la remercier car c'es
grâce à son témoignage que j'ai connu Madame Lucie Bourbon une dame humble d
cœur qui m'a accordé mon prêt de 23000€ en 72h sans aucune complication. A
début je doutais de sa bonne foi mais je me suis décidée à donner le bénéfice d
doute et croyez moi que contrairement à tous ces faux prêteurs cette dame m'
prouvé qu'il existe encore des prêteurs sérieux. N'hésitez pas à la contacte
pour tous vos besoins. Son mail: Luciebourbon1
Madame Amandine Poire si vous voyez ce message sachez que je vous dois tout.
Je vous laisse une fois encore son adresse: Luciebourbon1
doudou971 (18/06/2019, 13h27)
Le vendredi 25 Janvier 2019 à 16:24 par Nicolas George :
> Olivier Miakinen , dans le message
> a écrit :
> Un petit peu quand même dans la mesure où SHA-256 est
> standardisé,
> savoir exactement sur quoi on le calcule est intéressant.
> Je déconseille les backslashes seuls dans des guillemets doubles :
> « "%s\n" ».
> Note : « cut -c 1-64 » sera un substitut
> intéressant à sed. "Je déconseille les backslashes seuls dans des guillemets doubles :"


Très bon déconseil :)
Discussions similaires
[SHELL] remplacer un caractère dans une sous-chaine

[shell script] sudo dans un shell script

[SCRIPT] Utilsier firefox/mozilla dans un script shell

Crytper une chaine dans un script Shell (BASH)


Fuseau horaire GMT +2. Il est actuellement 09h52. | Privacy Policy