BASH Shell下的Bcrypt加密?

7
我正在寻找一种使用BCRYPT在BASH脚本中哈希密码的方法。我已经搜索了很多资料,尝试谷歌搜索所有相关内容,最接近的可能是使用openssl实现,但方法还不清楚。
由于我所在的系统是封闭的,没有外部访问权限,并且没有安装Python。
我擅长编写BASH程序,使用的是GNU Bash,版本为4.1.2(2)-release(x86_64-redhat-linux-gnu)。
我对使用纯BASH / AWK或任何其他适用于常见RHEL Shell的实现感兴趣。
Perl已安装,但我更愿意避免这个选项,最少因为我不会Perl,还有与Perl相关的社会污名(hahaha.c)。
谢谢!

输入字符串的长度是多少?您需要的输出哈希长度是多少?您需要使用特定的密码来采用吗? - Inian
输入字符串是随机生成的7个字母数字字符之一,允许使用以下特殊字符之一:!@#$%。我一直在使用在线哈希工具,但我正在尝试自动化此过程。我所知道的关于这个过程的全部内容是,读取数据库的Java应用程序,在我更新用户凭据时,被编程为读取BCRYPT哈希值。 - misteralexander
那么输入字符串是在shell变量中可用的吗?还是来自其他命令的输出?你打算如何在这里使用shell脚本? - Inian
是的,现在shell正在使用/dev/urandom和TR生成随机字符串(tr -dc 'a-zA-Z0-9!@#$%' < /dev/urandom | dd bs=3 count=1 2>/dev/null)。现在我将值写入文件,以便可以访问密码并使用工具对其进行哈希处理...我想自动化哈希处理过程,以便可以简单地使用相同的脚本并直接将我的BCRYPT哈希值插入数据库。这是一个封闭系统,无法安装Python。 - misteralexander
1
没有 bcrypt 安装,也没有 perl 或者 python。我猜你也不能编译 C 代码来构建自己的 bcrypt?Bash 并没有内置 bcrypt,所以你需要使用一些外部工具。我唯一看到的解决方案就是使用 perl。你甚至不需要理解这个脚本。从一个简单的谷歌搜索:https://gist.github.com/evandrix/1076041 和 https://yorickpeterse.com/articles/use-bcrypt-fool/ 和 https://www.example-code.com/perl/bcrypt_hash_password.asp。通过一些研究可以发现很多东西!http://idownvotedbecau.se/noresearch/ - Nic3500
显示剩余5条评论
1个回答

12

这是我使用的东西

leo@xxx:~$ htpasswd -nbBC 10 USER topsecret
USER:$2y$10$vDtCxgJ4DIZ1itAAq6NDkedmaDFHlPdlpLY.EiEa3QBXHnH0oLatW

请注意盐的前缀(即 $2a$2y)在不同的系统/平台上可能会有所不同。

我的电脑

leo@xxx:~$ uname -a
Linux xxx 5.0.0-37-generic #40~18.04.1-Ubuntu SMP Thu Nov 14 12:06:39 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

1
如果您将此输出放入文件中,您可以使用htpasswd -vbBC 10 <filename> USER topsecret进行匹配。 - ton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接