0

我正在使用 Unity 和 Smart Fox Server 创建游戏,并想使用我的 wordpress 数据库。我的第一次尝试:

string cryptedPassword = Crypter.PhpassCrypter.Crypt(password);

我得到的输出有正确的前缀,所以我不太明白。

我尝试在 wp-settings.php 文件中使用盐字符串,

string cryptedPassword = Crypter.PhpassCrypter.Crypt(password, 'bigLongSaltInWP-file');

但我得到了“无效盐”的回报。

PHP,尤其是 phppass,对我来说是陌生的,我仍在专门阅读 phppass,但我只是没有看到它是如何使用盐字符串的,这让我相信我完全错过了正在发生的事情。

4

1 回答 1

0

要验证密码,您应该测试

(passwordStoredInWPDatabase == Crypter.PhpassCrypter.Crypt(testPassword, passwordStoredInWPDatabase))

没有 passwordStoredInWPDatabase 的重载使用默认参数调用 Crypter.PhpassCrypter.GenerateSalt()。这是用于存储密码,而不是用于测试现有密码。

基于 Crypt 的密码格式将算法标签和盐值存储在字符串的开头。在测试现有密码时,CryptSharp 将提取盐并将其合并到散列中。由于盐匹配,加密密码也将匹配。

希望这可以帮助 :)

詹姆士

于 2014-07-25T20:06:44.360 回答