针对Ruby中的/ etc / shadow,平台以模块化加密方式(MFC)SHA512独立生成Linux密码

问题描述 投票:0回答:1

为了自动创建虚拟机,我从一些Ruby代码生成/ etc / shadow的密码。这是在主机上完成的。主机可以是Linux或Windows。

在Linux主机上]

"mypassword".crypt("$6$" + "123SaLt9")

返回

$6$123SaLt9$idgUFrrwVkpDMcoHj7SAYH0UwCY6LymbsR9yTDrelYgcZ2wstoynmLIY83qBF0/BIT4Od.rQL2g3n2jEG/VXp/

这是正确的,并且适用于/ etc / shadow。

但是,在some

Windows 10主机上(由于大约两个星期前,在两个同事的机器上,同一行代码返回了]
$6MrNddDu3Hf6

显然,它无法工作。 (在此处https://judepereira.com/blog/use-ruby-to-generate-your-shadow-password/,对于MacOS观察到了类似的行为)

我忽略了此功能与平台有关(https://apidock.com/ruby/String/crypt)。除了它在几周前确实起作用之外,我还认为我不能认为它在Windows 10主机上可以可靠地工作。

我需要一个在Linux和Windows 10主机上以MFC格式返回正确密码哈希的解决方案。据我了解,MFC的密码部分不仅是生成SHA512的base64编码结果,而且是更为复杂的过程(https://akkadia.org/drepper/SHA-crypt.txtUsing ruby to generate SHA512 crypt-style hashes formatted for /etc/shadow?)。我想避免本质上自己在Ruby中实现该算法。我做了几个小时的研究,但到目前为止找不到有用的东西。

关于如何避免在Windows上发生此问题的任何想法,即如何独立于平台生成这些密码哈希?

为了自动创建虚拟机,我从一些Ruby代码生成/ etc / shadow的密码。这是在主机上完成的。主机可以是Linux或Windows。在Linux主机上,“ mypassword” ...

ruby linux windows password-hash
1个回答
1
投票

如您所发现,crypt方法与平台有关。它可用的算法取决于主机。 macOS仅支持DES。现代Linux发行版可能会支持所有现代密码。 Windows –总的来说,这取决于您运行Ruby的方式。 (您使用的是WSL吗?直接在Windows上运行Ruby?还有其他吗?)

© www.soinside.com 2019 - 2024. All rights reserved.