C# 检查字符串是否已加密,而不是在c中#

C# 检查字符串是否已加密,而不是在c中#,c#,C#,如何通过C#查找密码是否加密(SHA256算法)。我有一个类似customer的表,带有密码列。我需要找出哪些密码在c#.net中加密,哪些密码未加密SHA256哈希是字符串中的32字节[],它可以是长度为64个字符的字符串。 根据基底的不同,有效字符可能是[a-fA-F0-9]或base64[0-9a-zA-Z+/] 但这还不够,因为FOOBAR01copy pass 8 time既是一个密码,也是2^(32*8)可能的纯文本的散列 您应该在下一次连接时强制用户更改密码,并一直对密码进行哈希运

如何通过C#查找密码是否加密(SHA256算法)。我有一个类似customer的表,带有密码列。我需要找出哪些密码在c#.net中加密,哪些密码未加密SHA256哈希是字符串中的32字节[],它可以是长度为64个字符的字符串。
根据基底的不同,有效字符可能是
[a-fA-F0-9]
或base64
[0-9a-zA-Z+/]

但这还不够,因为
FOOBAR01
copy pass 8 time既是一个密码,也是
2^(32*8)
可能的纯文本的散列

您应该在下一次连接时强制用户更改密码,并一直对密码进行哈希运算

你也可以从另一方面来考虑这个问题

在登录函数中,将输入密码与数据库值进行比较。如果匹配,则您有一个未加密的密码并可以转换它

或者它没有,您尝试比较散列输入和数据库值, 如果匹配,您有一个hased密码,用户应该登录。
否则密码不匹配,登录失败。

任何32字节的字符串都是纯文本的哈希。。只有2^(32*8)的可能性,因此…无法将32字节的纯文本与散列区分开来,因为纯文本是可能的散列。因此,要么字符串不是32字节,也不是散列,要么它是32字节,同时是散列或/和密码。如果同时存储加密密码和未加密密码,则问题比确定哪个是哪个更大。我建议只存储散列密码,这样你就不需要计算了。关于否决票,你的问题相当模糊,没有包括你已经尝试过的细节,你遇到过的具体问题等。也许可以用SO和read@Lennart,是的,它是32字节,所以字符串应该是64。字符必须是
[a-fA-F0-9]
或base64
[0-9a-zA-Z+/]