如何将php crypt函数(SHA512)转换为ruby?

注意:我不是在寻找解决方法,我正在寻找一个简单的ruby解决方案!

这个问题与这个问题类似,但它没有回答,它只是一个shell命令行的解决方法。

我想生成一个sha512加密字符串,它与debian / etc / shadow中的格式兼容。

以下用php创建一个正确的字符串:

$salt = 'fGn9LR75'; $hash = crypt('test', '$6$'.$salt); // hash is: // $6$fGn9LR75$YpI/vJHjEhvrYp5/eUSRinpiXdMthCxFWSEo0ktFNUaRBsA7pCWYzzmQptmnfyHno9YEJFNHYuESj3nAQmSzc1 

据我所知,这是一个普通的盐渍base64编码字符串。 sha生成方法的规范就在这里

 irb(main):001:0> salt = 'fGn9LR75'; irb(main):002:0* hash = 'test'.crypt('$6$' + salt); irb(main):003:0* hash => "$6$fGn9LR75$YpI/vJHjEhvrYp5/eUSRinpiXdMthCxFWSEo0ktFNUaRBsA7pCWYzzmQptmnfyHno9YEJFNHYuESj3nAQmSzc1" 

SHA256 / 512的crypt()算法不仅仅是base64编码的哈希。 这是一个故意疯狂的过程,涉及多个并行运行的哈希。