gpt4 book ai didi

php - php 中的 Ruby sha512 密码检索

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:21 25 4
gpt4 key购买 nike

(由于对我的问题有些困惑而更新)我们使用此方法生成 digested_pa​​ssword,将其保存到我们的数据库中以供以后查找。当我们对我们的应用程序的用户进行身份验证时,此方法将再次针对他们的输入运行,如果 digested_pa​​ssword 输出与我们保存在数据库中的 digested_pa​​ssword 匹配,我们将对他们进行身份验证。我需要在 PHP 中为另一个共享数据库的应用程序重现此函数。

def self.hash_password( password, salt )
salted_password = password.insert 4, salt
digested_password = Digest::SHA512.hexdigest("#{salted_password}")
return digested_password
end

我真的没有使用 Ruby 的经验,所以请原谅我的理解不足。

谢谢!

最佳答案

因为您不能从像 SHA-512 这样的单向散列中“检索”密码,我们能得到的最接近的是能够从相同的密码和盐生成相同的散列。让我们看看 Ruby 代码:

def self.hash_password( password, salt )
salted_password = password.insert 4, salt
digested_password = Digest::SHA512.hexdigest("#{salted_password}")
return digested_password
end

这里唯一有点“奇怪”的是对 .insert method 的调用在密码字符串上。它基本上是将盐直接拼接到密码中,从第四个字符索引开始。通常盐只是简单地与密码连接。

我们可以使用 substr 复制它:

function hash_password($password, $salt) {
$salted_password = substr($password, 0, 4) . $salt . substr($password, 4);
return hash('sha512', $salted_password);
}

我正在使用现在默认的 hash extension在这里,因为它几乎是生成 SHA-512 哈希的最可靠方法。

使用此代码,您应该能够为给定的相同密码和盐组合生成相同的哈希值。我不确定当密码长度少于五个字符时会有什么行为。


是的,看起来应该可以:

[charles@lobotomy ~]$ irb
irb(main):001:0> require 'digest/sha2'
=> true
irb(main):002:0> def hash_password( password, salt )
irb(main):003:1> salted_password = password.insert 4, salt
irb(main):004:1> digested_password = Digest::SHA512.hexdigest("#{salted_password}")
irb(main):005:1> return digested_password
irb(main):006:1> end
=> nil
irb(main):007:0* puts hash_password('password', 'salt')
92d3efdbf51d199b0930c427b77dc8d5cf41ac58b6fab5f89cc3f32d719a8f6ffcdff6211bdd0565a6e7b09925839e5dcce1fa5abf65eca87c6a883ab0b510b9
=> nil
irb(main):018:0> exit
[charles@lobotomy ~]$
[charles@lobotomy ~]$ php -a
Interactive shell

php > function hash_password($password, $salt) {
php { $salted_password = substr($password, 0, 4) . $salt . substr($password, 4);
php { return hash('sha512', $salted_password);
php { }
php > echo hash_password('password', 'salt');
92d3efdbf51d199b0930c427b77dc8d5cf41ac58b6fab5f89cc3f32d719a8f6ffcdff6211bdd0565a6e7b09925839e5dcce1fa5abf65eca87c6a883ab0b510b9
php >

关于php - php 中的 Ruby sha512 密码检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com