我们有一个用 Ruby on Rails 构建的网站。用户注册是通过 Ruby 中的站点处理的,密码使用 Ruby 的 SHA1.HexDigest 函数进行哈希处理,每个用户使用不同的盐。我需要做的是 - 在 PHP 中创建一个 web 服务,它将登录已经在网站上注册的用户。为此,我需要从用户输入中生成相同的哈希值。由于我对 Ruby 的了解几乎为零,因此我对如何使用 PHP 重现相同内容进行了大量研究。我浏览了以下链接,但无济于事。 如何在 PHP 中生成密码,就像 Devise Gem 在 Ruby on Rails 中所做的那样
Ruby 还会多次处理/散列输入(即延伸,您可以在 Ruby 中称之为)。
保存在数据库中的散列长度为 128 个字符。盐长度为 20 个字符。
不知道是不是也用了某种辣椒。
例子,
用户输入 = 123456 盐 = g0i3A51x0xa7wrfWCMbG
数据库密码(128 个字符哈希)= 5374f9853f96eaa5b3c1124f9eb1dbbb63fb5c5ce40abb41ec88c745ec3455328685f3046cac8c356a4d81dbd315fd09173c54dc94a4208e5bc091776b02eb7
如果有人可以使用上面给出的用户输入和盐,用 PHP 复制相同的哈希,那么请分享代码。请帮忙。这对我们很有帮助。
谢谢
class Sha1 < Base
# Gererates a default password digest based on stretches, salt, pepper and the
# incoming password.
def self.digest(password, stretches, salt, pepper)
digest = pepper
stretches.times { digest = self.secure_digest(salt, digest, password, pepper) }
digest
end
private
# Generate a SHA1 digest joining args. Generated token is something like
# --arg1--arg2--arg3--argN--
def self.secure_digest(*tokens)
::Digest::SHA1.hexdigest('--' << tokens.flatten.join('--') << '--')
end