将ASP函数转换为PHP以生成密码

时间:2012-12-06 18:42:54

标签: php asp.net md5

我正在努力将ASP网站转换为PHP。该网站使用第三方API。第三方API需要存储在数据库中的UserID和每个用户的密码。 ASP站点没有将密码保存在数据库中,而是使用以下函数每次根据UserID导出密码:

public static string GetLmsUserPassword(int userId)
{
    var hash = userId.ToString().MD5();
    return hash.Substring(15, 4) + hash.Substring(4, 4);
} 

在PHP中,我写了以下内容:

function lms_password($user_id) {
    $hash = md5((int)$user_id);
    $password = substr($hash,15,4).substr($hash,4,4);
    return $password;
}

但是,在PHP中生成的密码似乎与ASP中的密码不匹配。我想知道ASP是否有不同的md5?

示例UserID实际上是一个字符串,而不仅仅是一个数字:22E21F5D-7979-467E-928D-4EFCC323BDCB

2 个答案:

答案 0 :(得分:1)

.NET和PHP版本之间的结果差异可能是由于每个字符串都将字符串转换为int的方式。尝试在两者中转换您的示例ID,并进行比较。

答案 1 :(得分:1)

ASP:var hash = userId.ToString().MD5();

看到ToString()部分?这意味着ID可能被解释为字符串。

您的PHP:$hash = md5((int)$user_id);

显式地将其强制转换为int,它将散列为完全不同的值。

  

示例UserID实际上是一个字符串,而不仅仅是一个数字:22E21F5D-7979-467E-928D-4EFCC323BDCB

那么......你为什么要把它作为一个int? :我

编辑:我也喜欢密码似乎是从userID的哈希值静态生成的。非常安全。