我设置了密码“13579”,认证模式表单将其转换为MD5,如“mEXg8klnq0TwPFvAqytULA==”,但几分钟后我再次尝试使用相同的密码“13579”创建另一个密码,但它转换为不同的密码,如“uM4gH8HO8cvoE0slg6OyKA==”。MD5的结构是什么?它是否与我的用户名和时间有关?我想为我的用户创建相同的密码,因此如果它取决于时间,则无法创建相同的密码。
MD5是一种确定性算法,因此您可能会遇到“加盐哈希”。这意味着,某些字符串或其他数据(例如时间戳)被编码为“盐”添加到密码中以加强它。
在数据库中查找名为salt的列,或者检查附加有创建日期时间戳的密码的md5结果,以查找盐。
你看到字符串末尾的这些 == 符号吗?那是用于 Base64 转换的字符串。而等号符号则用于填充。
至于你获得的字符串。 它不同,因为 ASP.Net 成员资格提供程序为每个不同的用户分配了一个不同的盐值,所以即使用户名相同,你也会得到不同的哈希值。
但是,如果你已经为两个用户设置了相同的密码,你可以使用相同的密码登录.. 因为在内部,盐和相同的密码的混合物将总是匹配它们各自的哈希值。
MD5的结果是一致的,但你可能会发现用户名也在使用中,所以差异是因为不同的用户名。(时间不会有用,因为你无法将哈希密码与任何东西匹配)。