使用ASP.Net成员资格提供程序的未加密密码的最大长度是多少?

使用ASP.Net成员资格提供程序的未加密密码的最大长度是多少?,asp.net,encryption,asp.net-membership,Asp.net,Encryption,Asp.net Membership,我有一个生产站点,使用SQL成员资格提供商提供的加密的式密码存储,对于特别长的密码,我们得到了例外: 密码太长:加密后不能超过128个字符。参数名称newPassword 这是从MembershipUser.ChangePassword(string-oldPassword,string-newPassword)抛出的,尽管堆栈可能会更深一些 我需要限制我的用户的最大长度是多少,以便在他们提供该长度的密码时我们不会看到此错误 我意识到我们真的应该使用散列,这应该会产生更一致的结果,但在转换所有现

我有一个生产站点,使用SQL成员资格提供商提供的
加密的
式密码存储,对于特别长的密码,我们得到了例外:

密码太长:加密后不能超过128个字符。参数名称
newPassword

这是从
MembershipUser.ChangePassword(string-oldPassword,string-newPassword)
抛出的,尽管堆栈可能会更深一些

我需要限制我的用户的最大长度是多少,以便在他们提供该长度的密码时我们不会看到此错误


我意识到我们真的应该使用散列
,这应该会产生更一致的结果,但在转换所有现有密码之前,作为一种短期修复,我希望减少用户可以输入的最大字符数,以将加密长度保持在这一限值之下。

根据,数据库中正好有128个字符。它也可以随加密策略和字符串中的内容而变化。

Arn散列的密码不都是相同长度的吗?我相信
加密的
样式会添加一个salt,然后对密码进行加密,这样就可以潜在地检索密码,而不仅仅是存储散列(请不要在这一点上讨论这个问题的有效性-我很清楚,我们确实应该使用
hash
)。我不需要讨论:使用hash,因为它解决了您的问题,而且无论如何都应该使用。因为我认为您无法“真正解决”这个问题,至于加密,可能没有“一个最大值”由于一个较短的加密字符串可能比一个较长的加密字符串更长…是的,我担心你是对的…但是,我不完全确定更改它的含义,因为web上有许多其他依赖项。请记住,遗憾的是,这是生产系统,因此有许多现有encrypted密码到位-现在更改类型需要额外的解密练习,并重新散列所有这些密码:(