我正在将系统从OpenCart迁移到Ruby中的Spree,作为其中的一部分,我希望无缝迁移用户,以便他们可以在不更改密码的情况下继续登录。
查看OpenCart代码我找到了该网站的登录功能。我不擅长PHP,所以我想了解如何在ruby中重现以下内容
SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "')))))
我尝试过以下操作,但没有成功:
Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest(" . #{password . ")}")}")
我目前的测试案例是:
以前有人做过同样的迁移吗?或者有人可以解释PHP代码实际上在做什么吗?
谢谢!
答案 0 :(得分:2)
OpenCart代码是一个MySQL语句,PHP仅用于构造它。你接近你的Ruby替代品,问题在于密码包含,点只在PHP中使用。这是正确的:
Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest(password)}")}")
irb(main):001:0> password = "7fe391813e"
=> "7fe391813e"
irb(main):002:0> salt = "e4e91e33a"
=> "e4e91e33a"
irb(main):005:0> Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest("#{salt}#{Digest::SHA1.hexdigest(password)}")}")
=> "2e62a3b86da5ce878895bcc5745725493bde7ef0"