【问题标题】:Import MD5 Passwords from a PHP app to ASP.NET将 MD5 密码从 PHP 应用程序导入 ASP.NET
【发布时间】:2010-10-21 19:03:19
【问题描述】:

所以我正在编写一个需要从 PHP 应用程序导入用户的 ASP.NET 应用程序。密码使用 MD5 散列到数据库中,因此用户表记录或多或少看起来像这样:

用户密码

user1 827ccb0eea8a706c4c34a16891f84e7b

user2 e10adc3949ba59abbe56e057f20f883e

等等。我可以访问 PHP 源代码,我可以看到没有盐或其他任何东西,它只是一个直接的 MD5 应用程序。现在,回到我的 ASP.NET,我尝试使用以下逻辑使用 MD5:

public static string HashPassword(string Password)
    {
        //Declarations
        Byte[] originalBytes;
        Byte[] encodedBytes;            
        MD5 md5;

        originalBytes = ASCIIEncoding.Default.GetBytes(Password);            
        md5 = new MD5CryptoServiceProvider();
        encodedBytes = md5.ComputeHash(originalBytes);                                 

        return BitConverter.ToString(encodedBytes);
    }

问题是,返回的字符串如 50-F8-4D-AF-3A-6D-FD-6A-9F-20-C9-F8-EF-42-89-42,当然不会与数据库中的信息相匹配。我应该怎么做才能不必重置 500 多个用户密码?

【问题讨论】:

标签: c# php asp.net md5


【解决方案1】:

改为返回:

return Encoding.UTF8.GetString(encodedBytes).ToLowerInvariant();

字符串值中的BitConverter explicitly inserts dashes

当然,您也可以继续使用 BitConverter 并直接使用 .Replace("-","").ToLower()

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多