黑客有可能解密ASP.NET会员密码吗?

Edi*_*ang 4 asp.net-membership password-encryption

我正在使用默认的SQL Provider,默认的web.config设置来实现ASP.NET Membership.

我注意到密码是哈希的.但我不知道asp.net如何哈希我的密码,所以我不确定黑客是否有可能解密这个?

如果asp.net使用相同的规则来哈希密码,大家都知道.比黑客更容易破解它.

例如.如果asp.net使用MD5(123456),结果是"E10ADC3949BA59ABBE56E057F20F883E",那么黑客可能会有一个MD5字典来查找它.

我的设置是:

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
Run Code Online (Sandbox Code Playgroud)

- SQL语句:

SELECT am.UserId, am.[Password], am.PasswordSalt FROM aspnet_Membership am
Run Code Online (Sandbox Code Playgroud)

- 结果是:

F10A635D-22DA-419C-84E6-767D2A35A010,tpeiwPt5+kFbcocQZOuc4aoHeuI=,PVq9dPtbFxze9Erbfd7HrA==
Run Code Online (Sandbox Code Playgroud)

密码是123456,它变成"tpeiwPt5 + kFbcocQZOuc4aoHeuI =".

在不同的机器或不同的应用程序上,此值是否始终相同?

如果此值与盐"PVq9dPtbFxze9Erbfd7HrA =="有关,黑客是否可以使用此盐来解密我的密码?

ato*_*inf 7

为了能够回答这个问题,你必须要理解两件事:哈希的作用和盐的作用.

散列的要点是在单向过程中将任意字符串提取为已知长度的字符串.也就是说,一个好的哈希算法将做到这一点以这样的方式,这是一个很难的问题找到散列为相同值的字符串.

但是,问题是当给定相同的输入时,散列算法总是返回相同的结果.盐的目的是在密码数据库被盗的情况下缓解这个问题.每次我散列密码时,我都会生成一个完全随机的盐,它不需要保密,并散列之前将其添加到我的密码中.这样,我确保每次散列给定密码时,我都会获得不同的结果.随机盐不需要保密的原因,实际上必须与散列密码一起存储在"明文"中,因为用于生成原始散列的相同的​​盐需要验证,为了验证目的,给定的密码匹配哈希.

因为每次用户想要更改密码时都会随机生成一个好的盐,即使重新存储相同的密码也几乎肯定会创建一个完全不同的哈希值,只要存储密码的应用程序正确使用盐.

如果哈希算法构造良好,那么对随机盐存储的密码进行的唯一攻击就是强力搜索.像MD5这样的哈希算法被认为是"破碎的",因为有可能比蛮力时间更快地找到所谓的"哈希冲突".您将需要找出您的平台使用哪种算法来生成密码哈希值,并读取一些内容以确定是否可以找到该算法的哈希冲突.