为了自动创建虚拟机,我从一些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.txt,Using ruby to generate SHA512 crypt-style hashes formatted for /etc/shadow?)。我想避免本质上自己在Ruby中实现该算法。我做了几个小时的研究,但到目前为止找不到有用的东西。
关于如何避免在Windows上发生此问题的任何想法,即如何独立于平台生成这些密码哈希?
为了自动创建虚拟机,我从一些Ruby代码生成/ etc / shadow的密码。这是在主机上完成的。主机可以是Linux或Windows。在Linux主机上,“ mypassword” ...
如您所发现,crypt
方法与平台有关。它可用的算法取决于主机。 macOS仅支持DES。现代Linux发行版可能会支持所有现代密码。 Windows –总的来说,这取决于您运行Ruby的方式。 (您使用的是WSL吗?直接在Windows上运行Ruby?还有其他吗?)