Shell sha1($salt.$ Password) ошибка
Я пытаюсь сделать что-то подобное прямо на моей консоли, как некоторые тесты:
Это не похоже на работу.. любая идея, что это ошибка, которую я делаю
salt="3245678906789045689"
password="12321312231"
blub=`sha1($salt.$password)`
-bash: command substitution: line 1: syntax error near unexpected token `$salt.$password'
-bash: command substitution: line 1: `sha1($salt.$password)'
Он выбрасывает ошибки, это то, что я собираюсь сделать в конце:
echo $blub
Может кто-нибудь, пожалуйста, помогите, что я делаю по ошибке?
2 ответа
Возможно, вы хотите использовать SHA1 из пакета OpenSSL. Это должно быть уже установлено в вашей системе.
echo -n "$salt$password" | openssl dgst -sha1
(stdin)= a1b2ce5a82e18f454db6b2d6ee82533914f90337
Чтобы получить только sha1-дайджест:
blub=`echo -n "$salt$password" | openssl dgst -sha1 |awk '{print $NF}'`
echo $blub
a1b2ce5a82e18f454db6b2d6ee82533914f90337
Я предполагаю, что вы скопировали свой код из PHP. Там функции вызываются в скобках и .
Оператор объединяет строки. В этой интерпретации мой код является точным эквивалентом вашего кода в BASH.
Я не встречал много объяснений о том, как легко сделать контрольную сумму SHA в bash и правильно поместить ее в переменную, в то же время мы не должны больше использовать sha1, но что-то более сложное для подбора, например sha512:
dash=`echo -n $password$salt|sha512sum` ##gives hash with trailing dash
read hash rest <<< "$dash" ##removes trailing dash and gives $hash
echo $hash
6555b9d2331203634664f48f604b59372b32badbc115ec6b2586890ef4d3a6b6816d84cc424cdfc538f6a7ccf664c90caeeb942dbf7953051bb1d7414a191c51