problèmes avec openssl et obtenir des valeurs correctes

Je semble avoir un problème avec l’obtention de la valeur correcte de la commande openssl lorsqu’elle est hachée. Voici ce que j’ai pour le code.

IFS="," while read -ra line; do if [ "${line[1]}" != "" ]; then echo -n "${line[*]},"; echo -n "${line[1]}" | openssl dgst -sha1 | sed 's/^.* //' ; else if [ "${line[1]}" == "" ]; then echo "${line[*]}, Hash Value: None"; fi fi done 

Voici l’entrée de la deuxième colonne du fichier texte, qui est “$ {ligne [1]}” dans le code.

 "1376051635" 

Voici comment j’exécute la commande:

 ./orange.sh < "C:\Documents and Settings\562359\Desktop\Analytics\persons\persons.txt" 

La sortie à l’écran est la suivante:

 "524786870","1376051635",2483a818fac3e5214697f1ed76d92e2f54d4a277 

la troisième colonne est la valeur hachée de la deuxième colonne mais elle n’est pas correcte. Quand je lance cette commande

 echo -n "1376051635" | openssl dgst -sha1 

Ma sortie est la suivante:

 (stdin)= f8d822c6b46a2eb4e35bb4d76b8ce2e336d541e8 

qui est la valeur de hachage correcte. Pourquoi cela ne fonctionne-t-il pas? Il semble que le code soit correct mais la valeur de hachage est sortie complètement différente de ce qu’elle devrait être. Toute aide sur cette question serait grandement appréciée.

Vous incluez les guillemets doubles qui expliquent pourquoi vous obtenez une valeur différente.

Vous pouvez essayer ce script:

 #!/bin/bash IFS="," while read -ra line; do if [[ -n ${line[1]} ]]; then second_value=${line[1]#\"} second_value=${second_value%\"} hash_value=$(echo -n "$second_value" | openssl dgst -sha1 | sed 's/^.* //') echo "${line[*]},${hash_value}" ## Or should ${hashvalue} be surrounded by quotes?: \"${hash_value}\" else echo "${line[*]}, Hash Value: None" fi done 

Remarque: Si vous prévoyez de remplacer la valeur de hachage précédente, utilisez plutôt cette ligne:

  echo "${line[*]:0:2},${hash_value}"