我尝试在我的控制台上直接做一些像这样的测试:
它似乎不起作用..任何想法我在做什么错误
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
有人可以帮忙解决我正在做的错误吗?
答案 0 :(得分:11)
您可能希望使用OpenSSL package中的SHA1。 这应该已经安装在您的系统上。
echo -n "$salt$password" | openssl dgst -sha1
(stdin)= a1b2ce5a82e18f454db6b2d6ee82533914f90337
仅捕获sha1-digest:
blub=`echo -n "$salt$password" | openssl dgst -sha1 |awk '{print $NF}'`
echo $blub
a1b2ce5a82e18f454db6b2d6ee82533914f90337
我假设您从 PHP 复制了代码。函数用括号调用,.
- 运算符连接字符串。在该解释中,我的代码与 BASH 中的代码完全等效。
答案 1 :(得分:1)
我没有遇到很多关于如何在bash中轻松执行SHA校验和并以正确的方式将其放入变量的解释,同时我们不应再使用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